SQL语句查询结果转excel
2009-01-12 11:55
435 查看
//直接输出到servlet可以不用在硬盘上写文件
public class SQLtoExcel extends HttpServlet {
public void init() throws ServletException
{
}
public void doGet(HttpServletRequest req, HttpServletResponse res)
throws ServletException, IOException
{
HSSFRow row=null;
HSSFCell cell = null;
try{
String title = req.getParameter("title");
String hql = req.getParameter("hql");
if(hql!=null&&title!=null){
//System.out.println(+"==========title");
BaseDAO bd = new BaseDAO();
// 创建新的Excel 工作簿
HSSFWorkbook workbook = new HSSFWorkbook();
// 在Excel工作簿中建一工作表,其名为缺省值
//HSSFSheet sheet=workbook.getSheetAt(0);//得到工作表
HSSFSheet sheet = workbook.createSheet("查询结果");
sheet=workbook.getSheetAt(0);//得到工作表
String titles[] = new String(title.getBytes(),"UTF-8").split(";");
int cols = titles.length;//列数
// 在索引0的位置创建行(最顶端的行)
row = sheet.createRow(0);
for(int i=0;i<titles.length;i++){
//在索引0的位置创建单元格(左上端)
cell = row.createCell(i);
// 在单元格中输入一些内容
cell.setCellType(HSSFCell.CELL_TYPE_STRING);
System.out.println(titles[i]);
cell.setCellValue(titles[i]);
}
List l = bd.querySQL(hql);
int rows = l.size();//行数
System.out.println(l.size()+"=======");
for(int i=1;i<rows;i++){
// 在索引0的位置创建行(最顶端的行)
row = sheet.createRow(i);
for(int j=0;j<cols;j++){
Object[] obj = (Object[])l.get(i);
String str = String.valueOf(obj[j]);
//在索引0的位置创建单元格(左上端)
cell = row.createCell(j);
// 在单元格中输入一些内容
cell.setCellType(HSSFCell.CELL_TYPE_STRING);
System.out.println("======="+str);
cell.setCellValue(str);
}
}
//取得输出流
OutputStream out = res.getOutputStream();
//清空输出流
res.reset();
//设置响应头和下载保存的文件名
res.setHeader("content-disposition","attachment;filename="+"Excel.xls");
//定义输出类型
res.setContentType("APPLICATION/msexcel");
workbook.write(out);
out.close();
res.flushBuffer();//强行将响应缓存中的内容发送到目的地
}
}catch(Exception e) {
e.printStackTrace();
}
}
public class SQLtoExcel extends HttpServlet {
public void init() throws ServletException
{
}
public void doGet(HttpServletRequest req, HttpServletResponse res)
throws ServletException, IOException
{
HSSFRow row=null;
HSSFCell cell = null;
try{
String title = req.getParameter("title");
String hql = req.getParameter("hql");
if(hql!=null&&title!=null){
//System.out.println(+"==========title");
BaseDAO bd = new BaseDAO();
// 创建新的Excel 工作簿
HSSFWorkbook workbook = new HSSFWorkbook();
// 在Excel工作簿中建一工作表,其名为缺省值
//HSSFSheet sheet=workbook.getSheetAt(0);//得到工作表
HSSFSheet sheet = workbook.createSheet("查询结果");
sheet=workbook.getSheetAt(0);//得到工作表
String titles[] = new String(title.getBytes(),"UTF-8").split(";");
int cols = titles.length;//列数
// 在索引0的位置创建行(最顶端的行)
row = sheet.createRow(0);
for(int i=0;i<titles.length;i++){
//在索引0的位置创建单元格(左上端)
cell = row.createCell(i);
// 在单元格中输入一些内容
cell.setCellType(HSSFCell.CELL_TYPE_STRING);
System.out.println(titles[i]);
cell.setCellValue(titles[i]);
}
List l = bd.querySQL(hql);
int rows = l.size();//行数
System.out.println(l.size()+"=======");
for(int i=1;i<rows;i++){
// 在索引0的位置创建行(最顶端的行)
row = sheet.createRow(i);
for(int j=0;j<cols;j++){
Object[] obj = (Object[])l.get(i);
String str = String.valueOf(obj[j]);
//在索引0的位置创建单元格(左上端)
cell = row.createCell(j);
// 在单元格中输入一些内容
cell.setCellType(HSSFCell.CELL_TYPE_STRING);
System.out.println("======="+str);
cell.setCellValue(str);
}
}
//取得输出流
OutputStream out = res.getOutputStream();
//清空输出流
res.reset();
//设置响应头和下载保存的文件名
res.setHeader("content-disposition","attachment;filename="+"Excel.xls");
//定义输出类型
res.setContentType("APPLICATION/msexcel");
workbook.write(out);
out.close();
res.flushBuffer();//强行将响应缓存中的内容发送到目的地
}
}catch(Exception e) {
e.printStackTrace();
}
}
相关文章推荐
- MySQL中明知道查询结果只有一个,SQL语句中使用LIMIT 1会提高查询效率
- 在Excel中使用SQL语句对多个数据表进行精确筛选 (查询)
- sql联合查询 一条select语句 查询多个结果,显示
- sql语句将查询的结果拼接成字符串
- python之利用嵌套列表解析将sql查询结果同时写excel和txt文档
- 通过sql语句查询出来的结果字段没有到对应实体类时的处理方法
- 使用in关键字来限制SQL语句中的select查询结果
- 将根据字符查询转换后输出结果,规则为:’A’转换为’男’,’B’转换为’女’,其他字符转换为’未知’,请用一个SQL语句写出。
- SQL语句查询结果集中的动态修改案例(临时表+游标)
- 如何用SQL语句查询Excel数据?
- sql语句查询的结果,组织成对象。
- 如何解决:mysql中文查询不出结果(软件与SQL语句都正常)
- 常用SQL语句参数化+显示查询结果
- SQL语句查询结果额外添加一列序号自动增加
- SQL查询结果导出到Excel中
- sql 查询结果 excel
- mybatis执行查询语句查询不到结果,控制台输出sql语句复制到数据库中能查到数据
- SQL SERVER 2000 的企业管理器与查询分析器对于同一SQL语句有两个不同查询结果!
- vb 6.0 将sql查询出来的结果保存成excel 解决大数据存储速度
- mysql 在sql查询语句结果中,数字加千分逗号