SQL语句查询结果转excel


//直接输出到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();

        }

    }
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值