首页 > 其他 > 详细

poi 导出 excel

时间:2016-04-22 18:38:01      阅读:205      评论:0      收藏:0      [点我收藏+]
private void exportAssetExcel(HttpServletRequest request,
            HttpServletResponse response) throws IOException {
        String ogid = RequestUtil.getRequestBytes(request, "ogid").trim();
        String objectgroupname = RequestUtil.getRequestBytes(request, "objectgroupname").trim();
        String excelTitle = new String(objectgroupname.getBytes("ISO-8859-1"), "utf-8");
        if(objectgroupname==null || objectgroupname==""){
            objectgroupname = "备播单";
        }
        ObjectGroupRObjectMgr ogroMgr = new ObjectGroupRObjectMgr();
        BaseDAO basedao = ogroMgr.getBasedao();
        String strCondition= "select "
                + " ogro.new_assetname,"
                + " a.assetname,"
                + " m.filepath,"
                + " a.programtype,"
                + " a.videotype,"
                + " a.duration,"
                + " ogro.asset_price,"
                + " ogro.online_time,"
                + " ogro.asset_path"
                + " from "
                + " Objectgrouprobject ogro,"
                + " movie m,"
                + " asset a "
                + " where "
                + " ogro.objectid = a.assetid"
                + " and a.assetid = m.objectguid"
                + " and ogro.ogid = ?"
                + " order by ogro.ordernum asc";
        List<Comparable> paramlist = new ArrayList();
        paramlist.add(ogid);
        // 关联objectgrouprobject asset查询
        List<Object[]> list = basedao.SQLQuery(strCondition, paramlist);
        
        //创建一个workbook 对应一个excel文件
        HSSFWorkbook book = new HSSFWorkbook();
        //创建工作簿,对应一个sheet
        HSSFSheet sheet = book.createSheet(excelTitle);
        sheet.setColumnWidth((short)0,(short)1000);
        sheet.setColumnWidth((short)1,(short)4000);
        sheet.setColumnWidth((short)2,(short)4000);
        sheet.setColumnWidth((short)3,(short)10000);
        sheet.setColumnWidth((short)4,(short)4000);
        sheet.setColumnWidth((short)5,(short)4000);
        sheet.setColumnWidth((short)6,(short)4000);
        sheet.setColumnWidth((short)7,(short)2000);
        sheet.setColumnWidth((short)8,(short)4000);
        sheet.setColumnWidth((short)9,(short)10000);
        sheet.setColumnWidth((short)10,(short)10000);
        //设置格式
        HSSFCellStyle style_1 = book.createCellStyle();
        style_1.setAlignment(HSSFCellStyle.ALIGN_CENTER);
        HSSFFont f  = book.createFont();      
        f.setFontHeightInPoints((short) 14);//字号       
        f.setBoldweight(HSSFFont.BOLDWEIGHT_NORMAL);//加粗       
        style_1.setFont(f);   
        //创建第一行 合并单元格
        HSSFRow firstRow = sheet.createRow(0);
        sheet.addMergedRegion(new Region(0, (short)0, 0, (short)10));
        //组织第一行的数据
        HSSFCell cell = firstRow.createCell((short) 0);
        cell.setCellValue(excelTitle);    
        cell.setCellStyle(style_1);
//        cell.setCellType(HSSFCell.ENCODING_UTF_16);
        //创建第二行 合并单元格
        HSSFRow secondeRow = sheet.createRow(1);
        sheet.addMergedRegion(new Region(1, (short)0, 1, (short)8));
        //组织第二行的数据
        Calendar c = Calendar.getInstance();
        int year = c.get(Calendar.YEAR);
        int month = c.get(Calendar.MONTH);
        int day = c.get(Calendar.DAY_OF_MONTH);
        String calendarStr = year + "年" + month + "月" + day + "日";
        cell = secondeRow.createCell((short)0);
        cell.setCellValue("制表时间: "+ calendarStr);
        cell = secondeRow.createCell((short)9);
        cell.setCellValue("制表部门:内容(集成)中心");
        cell = secondeRow.createCell((short)10);
        cell.setCellValue("节目单类型:上片单");
        //组织第三行数据
        HSSFRow thirdRow = sheet.createRow(2);
        HSSFCellStyle style_2 = book.createCellStyle();
        style_2.setAlignment(HSSFCellStyle.ALIGN_CENTER);
        HSSFFont f2  = book.createFont();      
        f2.setBoldweight(HSSFFont.BOLDWEIGHT_NORMAL);//加粗       
        style_2.setFont(f2);
        HSSFCell third_cell = thirdRow.createCell((short)0);
        third_cell = thirdRow.createCell((short)1);
        third_cell.setCellValue("节目名称");
        third_cell.setCellStyle(style_2);
        third_cell = thirdRow.createCell((short)2);
        third_cell.setCellValue("正题名称");
        third_cell.setCellStyle(style_2);
        third_cell = thirdRow.createCell((short)3);
        third_cell.setCellValue("文件名称");
        third_cell.setCellStyle(style_2);
        third_cell = thirdRow.createCell((short)4);
        third_cell.setCellValue("节目类型");
        third_cell.setCellStyle(style_2);
        third_cell = thirdRow.createCell((short)5);
        third_cell.setCellValue("高标清");
        third_cell.setCellStyle(style_2);
        third_cell = thirdRow.createCell((short)6);
        third_cell.setCellValue("节目时长");
        third_cell.setCellStyle(style_2);
        third_cell = thirdRow.createCell((short)7);
        third_cell.setCellValue("价格");
        third_cell.setCellStyle(style_2);
        third_cell = thirdRow.createCell((short)8);
        third_cell.setCellValue("上片时间");
        third_cell = thirdRow.createCell((short)9);
        third_cell.setCellValue("节目路径");
        third_cell.setCellStyle(style_2);
        third_cell = thirdRow.createCell((short)10);
        third_cell.setCellValue("备注");
        third_cell.setCellStyle(style_2);
        int listSize = 0;
        if(list!=null && list.size()>0){
            listSize = list.size();
            HSSFCellStyle style_3 = book.createCellStyle();
            style_3.setAlignment(HSSFCellStyle.ALIGN_CENTER);
            style_3.setVerticalAlignment(HSSFCellStyle.VERTICAL_CENTER);
            //组织节目数据
            for(int i=0; i<listSize; i++){
                Object[] obj = list.get(i);
                HSSFRow row = sheet.createRow(i+3);
                row.setHeight((short)800);
                HSSFCell i_cell = row.createCell((short)0);
                i_cell.setCellValue(""+(i+1));
                i_cell.setCellStyle(style_3);
                i_cell = row.createCell((short)1);
                i_cell.setCellValue(String.valueOf(obj[0]).trim());
                i_cell.setCellStyle(style_3);
                i_cell = row.createCell((short)2);
                i_cell.setCellValue(String.valueOf(obj[1]).trim());
                i_cell.setCellStyle(style_3);
                i_cell = row.createCell((short)3);
                i_cell.setCellValue(String.valueOf(obj[2]).trim());
                i_cell.setCellStyle(style_3);
                i_cell = row.createCell((short)4);
                i_cell.setCellValue(String.valueOf(obj[3]).trim());
                i_cell.setCellStyle(style_3);
                i_cell = row.createCell((short)5);
                i_cell.setCellValue(String.valueOf(obj[4]).trim());
                i_cell.setCellStyle(style_3);
                i_cell = row.createCell((short)6);
                i_cell.setCellValue(String.valueOf(obj[5]).trim());
                i_cell.setCellStyle(style_3);
                i_cell = row.createCell((short)7);
                i_cell.setCellValue(String.valueOf(obj[6]).trim());
                i_cell.setCellStyle(style_3);
                i_cell = row.createCell((short)8);
                i_cell.setCellValue(String.valueOf(obj[7]).trim());
                i_cell.setCellStyle(style_3);
                i_cell = row.createCell((short)9);
                i_cell.setCellValue(String.valueOf(obj[8]).trim());
                i_cell.setCellStyle(style_3);
                i_cell = row.createCell((short)10);
                i_cell.setCellValue("");
                i_cell.setCellStyle(style_3);
            }
        }
        HSSFRow row_one = sheet.createRow(3+listSize);
        HSSFCell cell_one = row_one.createCell((short)0);
        cell_one.setCellValue("编辑:");
        cell_one = row_one.createCell((short)9);
        cell_one.setCellValue("审核:");
        sheet.addMergedRegion(new Region(3+listSize, (short)0, 3+listSize, (short)8));
        sheet.addMergedRegion(new Region(3+listSize, (short)9, 3+listSize, (short)10));
        
        HSSFRow row_two = sheet.createRow(4+listSize);
        HSSFCell cell_two = row_two.createCell((short)0);
        cell_two.setCellValue("制作:");
        sheet.addMergedRegion(new Region(4+listSize, (short)0, 4+listSize, (short)10));
        
        ByteArrayOutputStream os = new ByteArrayOutputStream();
        try {
            book.write(os);
        } catch (IOException e) {
            e.printStackTrace();
        }
        byte[] content = os.toByteArray();
        InputStream is = new ByteArrayInputStream(content);
        // 设置response参数,可以打开下载页面
        response.reset();
        response.setContentType("application/vnd.ms-excel;charset=utf-8");
        String filename = objectgroupname + ".xls";
        response.setHeader("Content-Disposition", "attachment;filename="+ filename);
        response.setCharacterEncoding("utf-8");
        ServletOutputStream out = response.getOutputStream();
        BufferedInputStream bis = null;
        BufferedOutputStream bos = null;
        try {
            bis = new BufferedInputStream(is);
            bos = new BufferedOutputStream(out);
            byte[] buff = new byte[2048];
            int bytesRead;
            // Simple read/write loop.
            while (-1 != (bytesRead = bis.read(buff, 0, buff.length))) {
                bos.write(buff, 0, bytesRead);
            }
        } catch (final IOException e) {
            throw e;
        } finally {
            if (bis != null)
                bis.close();
            if (bos != null)
                bos.close();
        }
        
        
    }

以上是java部分的代码, 导出按照workbook-->sheet-->row-->cell的大体流程走, 再加上格式设置, 加上值等等

前端需要弹出下载框,可以用:

window.open("objectgroup.do"+"?action=exportAssetExcel&ogid="+ogid+"&objectgroupname="+objectgroupname);

这里参数可能有中文,所以java部分要处理,可以参见上面java代码

poi 导出 excel

原文:http://www.cnblogs.com/rocky-fang/p/5422241.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!