栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

ExcelExportUtil基于模板导出excel&POI导出excel

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

ExcelExportUtil基于模板导出excel&POI导出excel

1.使用ExcelExportUtil基于模板导出excel数据,listToExcel 

            cn.afterturn
            easypoi-spring-boot-starter
            4.2.0

第一步,导入依赖没啥好说的;

第二步,查询数据库或es数据组装成list对象;

第三步,填充Map excelMap = new HashMap<>();

数据key和excel模板对应,如果一次导出多个,可以用index区分;

HttpServletResponse response;
TemplateExportParams params = new TemplateExportParams("doc/模板路径.xlsx",true);

//上面的步骤都是为了填充数据,看个人需求组装数据结构

try{
Workbook workBook= ExcelExportUtil.exportExcel(params, excelMap);
//删除没有数据的sheet
//workBook.removeSheetAt(workBook.getSheetIndex(entry.getKey()));

response.setContentType("application/octet-stream");
response.setHeader("Content-disposition","attachment;filename=" + URLEncoder.encode("模板名称.xlsx", "UTF-8"));
response.flushBuffer();
OutputStream out = response.getOutputStream();
workBook.write(out);
}finally{
    workBook.close();
}
2.基于org.apache.poi的XSSFWorkbook导出

第一步,导入依赖

         
            org.apache.poi
            poi
            4.1.1
        
        
            org.apache.poi
            poi-ooxml
            4.1.1
        

第二步,上图哈哈

public void ExcelExport(HttpServletResponse response) {
        //创建工作簿对象
        XSSFWorkbook workbook = new XSSFWorkbook();
        //创建工作表
        XSSFSheet sheet = workbook.createSheet("sheet1");
        //合并单元格(看需求是否需要合并的) 开始行,最后一行,开始列,最后一列
        //CellRangeAddress(int firstRow, int lastRow, int firstCol, int lastCol)
        CellRangeAddress range_1 = new CellRangeAddress(0, 0, 0, 4);
//        CellRangeAddress range_2 = new CellRangeAddress(1, 1, 0, 2);
//        CellRangeAddress range_2_1 = new CellRangeAddress(1, 1, 3, 4);
        sheet.addMergedRegion(range_1);
//        sheet.addMergedRegion(range_2);
//        sheet.addMergedRegion(range_2_1);

        //创建第一行
        XSSFRow row_0 = sheet.createRow(0);
        XSSFCell cell_0 = row_0.createCell(0);
        CellStyle style_0 = workbook.createCellStyle();
        //设置水平对齐方式为居中对齐
        style_0.setAlignment(HorizontalAlignment.CENTER);
        //设置垂直对齐方式为居中对齐
        style_0.setVerticalAlignment(VerticalAlignment.CENTER);
        //todo 还可以设置边框的样式,这里只设置了右边的,以此类推
        style_0.setBorderLeft(BorderStyle.THIN);
        //设置字体样式
        Font font_0 = workbook.createFont();
        //设置字体大小
        font_0.setFontHeightInPoints((short) 20);
        //设置加粗
        font_0.setBold(true);
        //设置字体颜色,这里我用了红色
        font_0.setColor(IndexedColors.RED.getIndex());
        style_0.setFont(font_0);
        //设置单元格样式
        cell_0.setCellStyle(style_0);
        cell_0.setCellValue("第一行的内容");
        //......省略很多内容
        //最后设置行的高度和列的宽度
        sheet.setDefaultRowHeight((short) 450);
        //setColumnWidth(int columnIndex, int width) 哪一列,宽度是多少,注:索引都是从0开始
        sheet.setColumnWidth(1, 20 * 256);
        response.setContentType("application/octet-stream");
        try {
            response.setHeader("Content-disposition",
                    "attachment;filename=" + java.net.URLEncoder.encode("jm.xlsx", "UTF-8"));
            response.flushBuffer();
            workbook.write(response.getOutputStream());
        } catch (Exception e) {
            e.printStackTrace();
        }
    }

就是这么简单 没了

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/704161.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号