文档章节

使用poi3.8导出多sheet

Java_weber
 Java_weber
发布于 2015/07/29 10:35
字数 345
阅读 20
收藏 0

【推荐】2019 Java 开发者跳槽指南.pdf(吐血整理) >>>

/**
 * 导出excel
 * hhs
 * @param list 数据要求是map集合,而且放入map的需要为字符串
 * @param tableHeader 第一行的中文名
 * @param tableProperties 取值的属性名
 * @param request
 * @param response
 * @throws Exception
 */
    public static void createExcelSheet(List<Map<String,Object>> list,String[] tableHeader,
            String[] tableProperties,HttpServletRequest request,HttpServletResponse response)
            throws Exception {
        HSSFWorkbook workBook = new HSSFWorkbook();
        int page = (list.size()/65000)+1;
        for(int m=0;m<page;m++){
            HSSFSheet sheet = workBook.createSheet();
            workBook.setSheetName(m, "sheet"+String.valueOf(m));
            HSSFHeader header = sheet.getHeader();
            header.setCenter("sheet");
            HSSFRow headerRow = sheet.createRow(0);
            
            HSSFCellStyle headstyle = workBook.createCellStyle();
            HSSFFont headfont = workBook.createFont();
            headfont.setColor(HSSFColor.BLACK.index);
            headfont.setBoldweight(HSSFFont.BOLDWEIGHT_BOLD);
            headstyle.setFont(headfont);
            for (int i = 0; i < tableHeader.length; i++) {//标题行
                HSSFCell headerCell = headerRow.createCell(i);
                headerCell.setCellStyle(headstyle);
                // 设置cell的值
                headerCell.setCellValue(tableHeader[i]);
                headerCell.setCellStyle(headstyle);
            }
            
            int rowIndex = 1;
            for (int i = ((list.size()/page)*m); i < ((list.size()/page)*(m+1)); i++) {
                Map<String,Object> map = (Map<String,Object>) list.get(i);
                HSSFRow row = sheet.createRow(rowIndex);//创建一行数据
                for (int q = 0; q < tableProperties.length; q++) {//循环放入每格的数据
                    // 创建第i个单元格
                    HSSFCell cell = row.createCell(q);
                    cell.setCellValue((String)map.get(tableProperties[q]));
                    sheet.setColumnWidth(q, (1000 * 5));
                }
                rowIndex++;
            }
            FileOutputStream fos = new FileOutputStream(request.getSession().getServletContext().getRealPath("template.xls"));
            sheet.setGridsPrinted(true);
            HSSFFooter footer = sheet.getFooter();
            footer.setRight("Page " + HSSFFooter.page() + " of " + HSSFFooter.numPages());
            workBook.write(fos);
            fos.close();
        }
        //把生成的文件下载
        File file = new File(request.getSession().getServletContext().getRealPath("template.xls"));
        if(!file.exists()) throw new RuntimeException("文件不存在!");
        FileInputStream fileInputStream = new FileInputStream(file);
        BufferedInputStream bufferedInputStream = new BufferedInputStream(fileInputStream);
        OutputStream outputStream = response.getOutputStream();
        BufferedOutputStream bufferedOutputStream = new BufferedOutputStream(outputStream);
        //response.reset();
        response.setContentType("application/x-download");
        response.setHeader("Content-disposition", "attachment;filename=" + URLEncoder.encode("template.xls", "UTF-8"));
        int bytesRead = 0;
        byte[] buffer = new byte[8192];
        while ((bytesRead = bufferedInputStream.read(buffer, 0, 8192)) != -1) {
            bufferedOutputStream.write(buffer, 0, bytesRead);
        }
        bufferedOutputStream.flush();
        fileInputStream.close();
        bufferedInputStream.close();
        outputStream.close();
        bufferedOutputStream.close();
        if(file.exists()){
            file.delete();
        }
    }

© 著作权归作者所有

Java_weber
粉丝 2
博文 1
码字总数 345
作品 0
佛山
程序员
私信 提问
Excel 导入导出解决方案 - Easy-POI

Easy-POI Easy-POI是一款Excel导入导出解决方案组成的轻量级开源组件。 (如果喜欢或愿意使用, 请star并且Watch本项目, 如果是企业使用, 请通过修改本文件的企业列表告诉我企业名称, 借此给我...

ningwei0
01/07
8.6K
0
Excel 导入导出组件 - Excel-Boot

Excel-Boot是一款Excel导入导出解决方案组成的轻量级开源组件。 Github地址:https://github.com/programmeres/excel-boot 码云地址:https://gitee.com/nw1992/easy-poi 如果喜欢或愿意使用...

ningwei0
01/20
5.1K
0
MyExcel 2.5.1 版本发布,Bug 修复

MyExcel 是一个集导入、导出、加密 Excel 等多项功能的 Java 工具包。 本次更新主要是BUG修复,更新点如下: 修复追加sheet的数据为空时导致的追加失败问题; 修复追加sheet导致的原配置失效...

惟心
06/17
2.6K
9
Java对象和Excel转换工具XXL-EXCEL

《Java对象和Excel转换工具XXL-EXCEL》 ![donate](http://

许雪里
2017/09/13
776
0
[转]Java大数据量导出Excel的问题

试共同条件: 数据总数为110011条,每条数据条数为19个字段。 电脑配置为:P4 2.67GHz,1G内存。 一、POI、JXL、FastExcel比较 POI、JXL、FastExcel均为java第三方开源导出Excel的开源项目。...

大冬
2011/07/28
4.5K
3

没有更多内容

加载失败,请刷新页面

加载更多

OSChina 周四乱弹 —— 浙江台的电话号码倒是记得挺牢

Osc乱弹歌单(2019)请戳(这里) 【今日歌曲】 @巴拉迪维 :《Out On The Streets》 一直不理解北欧人对重金属和死亡摇滚的热情,听完这首歌好像理解了。#今日歌曲推荐# 《Out On The Stre...

小小编辑
今天
6
0
Leetcode PHP题解--D121 21. Merge Two Sorted Lists

D121 21. Merge Two Sorted Lists 题目链接 21. Merge Two Sorted Lists 题目分析 合并两个有序链表。 思路 逐个遍历两个链表,把小的数字塞入数组里。之后再拼起来。 最终代码 <?php/** *...

skys215
今天
5
0
mars-config 动态配置管理

mars-config 码云地址:https://gitee.com/fashionbrot/mars-config 介绍 spring mvc 、springboot 动态配置系统。http 轮训方式 更新 动态配置 软件架构 软件架构说明 后端使用技术 :sprin...

fashionbrot
今天
14
0
女朋友玩吃鸡手游被开挂老哥骗炮,我见义勇为将骗子绳之以法

大家好,我是乔哥。 晚上10点以后下班后我回到自如出租房里面,开始处理公众号粉丝发来的消息,一条一条处理,突然看到了这么几条消息,吸引了我的眼球: 然后我就和这位女粉丝小红(化名)聊...

gzc426
今天
9
0
两款软件

fadetop保护眼睛软件 Snipaste截图软件

伟大源于勇敢的开始
今天
7
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部