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

这篇具有很好参考价值的文章主要介绍了ExcelExportUtil基于模板导出excel&POI导出excel。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

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

<dependency>
            <groupId>cn.afterturn</groupId>
            <artifactId>easypoi-spring-boot-starter</artifactId>
            <version>4.2.0</version>
</dependency>

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

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

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

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

public void ExcelExport(HttpServletResponse response,String params) {
        //excel参数
        Map<String, Object> excelMap = new HashMap<>();
        //resources下的doc包下的这个尾缀为xlsx的模板
        TemplateExportParams params = new TemplateExportParams(
                "doc/模板名称.xlsx", true);

        Workbook workBook = null;
        try {
            excelMap.put("startDate", "2022-01-01");
            excelMap.put("endDate", "2022-02-01");

            List<String> list = new ArrayList<String>(Arrays.asList("1","2"));//嗯 没错 这里就是要导出的数据
            excelMap.put("list", list);
            workBook = ExcelExportUtil.exportExcel(params, excelMap);
            response.flushBuffer();
            workBook.write(response.getOutputStream());
            response.setHeader("content-Type", "application/octet-stream");
            response.setHeader("Content-disposition", "attachment;filename=" + URLEncoder.encode("模板名称.xlsx", "UTF-8"));
        } catch (Exception e) {
            e.printStackTrace();
            throw new RuntimeException("导出异常");
        }finally {
            if (workBook != null) {
                try {
                    workBook.close();
                } catch (IOException e) {
                    e.printStackTrace();
                }
            }
        }
    }
}

2.基于org.apache.poi的XSSFWorkbook导出

第一步,导入依赖

         <dependency>
            <groupId>org.apache.poi</groupId>
            <artifactId>poi</artifactId>
            <version>4.1.1</version>
        </dependency>
        <dependency>
            <groupId>org.apache.poi</groupId>
            <artifactId>poi-ooxml</artifactId>
            <version>4.1.1</version>
        </dependency>

第二步,上图哈哈

 public void ExcelExport(HttpServletResponse response,String params) {
        Map<String,String> map = new HashMap<>();
        map.put("name","张三");
        map.put("age","1");
        map.put("adre","地址");
        List<Map<String,String>> list = new ArrayList<>();
        list.add(map);
        // 创建工作簿对象
        XSSFWorkbook workbook = new XSSFWorkbook();
        // 创建工作表
        XSSFSheet sheet = workbook.createSheet("居民职工结算申报明细单");
        //第一行合并
        CellRangeAddress region1 = new CellRangeAddress(0, 0, 0,13);

        //第二行合并
        CellRangeAddress region2 = new CellRangeAddress(1, 1, 0,6);
        CellRangeAddress region21 = new CellRangeAddress(1, 1, 7,13);
        //第三行合并
        CellRangeAddress region3 = new CellRangeAddress(2, 2, 0,6);

        sheet.addMergedRegion(region1);
        sheet.addMergedRegion(region2);
        sheet.addMergedRegion(region21);
        sheet.addMergedRegion(region3);

        //创建第一行
        XSSFRow row0 = sheet.createRow(0);
        XSSFCell cell_00=row0.createCell(0);
        XSSFFont font = workbook.createFont();
        //字体大小
        font.setFontHeightInPoints((short)20);
        // 字体加粗
        font.setBold(true);
        // 设置样式;
        XSSFCellStyle style = workbook.createCellStyle();
        // 设置水平对齐的样式为居中对齐
        style.setAlignment(HorizontalAlignment.CENTER);
        // 设置垂直对齐的样式为居中对齐
        style.setVerticalAlignment(VerticalAlignment.CENTER);
        // 在样式用应用设置的字体
        style.setFont(font);
        cell_00.setCellStyle(style);
        cell_00.setCellValue("第一行一般是标题,这里是标题的值");

        //创建第二行
        XSSFRow row1 = sheet.createRow(1);
        //第一列
        XSSFCellStyle style1 = workbook.createCellStyle();
        style1.setAlignment(HorizontalAlignment.LEFT);
        style1.setVerticalAlignment(VerticalAlignment.CENTER);
        initExcelCell(row1,style1,"第二行第一列的值",0);
        //第二列

        XSSFCellStyle style1_1 = workbook.createCellStyle();
        style1_1.setAlignment(HorizontalAlignment.RIGHT);
        style1_1.setVerticalAlignment(VerticalAlignment.CENTER);
        String startDate = "2022-01-01";
        String endDate = "2022-02-01";
        String reportDate = "日期:" + startDate.substring(0, 4) + "年" + startDate.substring(5, 7) + "月" + startDate.substring(8) + "日至" + endDate.substring(0, 4) + "年" + endDate.substring(5, 7) + "月" + endDate.substring(8) + "日";
        initExcelCell(row1, style1_1, reportDate, 7);

        //创建第三行
        XSSFRow row2 = sheet.createRow(2);
        //第一列
        initExcelCell(row2,style1,"企业名称:",0);
        //第二列
        initExcelCell(row2,style1,"单位:元",13);

        //创建第四行 表头
        XSSFRow row3 = sheet.createRow(3);
        XSSFCellStyle style2 = workbook.createCellStyle();
        style2.setAlignment(HorizontalAlignment.CENTER);
        style2.setVerticalAlignment(VerticalAlignment.CENTER);
        style2.setBorderLeft(BorderStyle.THIN);
        style2.setBorderBottom(BorderStyle.THIN);
        style2.setBorderRight(BorderStyle.THIN);
        style2.setBorderTop(BorderStyle.THIN);

        List<String> cellList = Arrays.asList("0", "1", "2", "3", "4", "5", "6", "7",
                "8", "9", "10", "11", "12", "13");
        //初始化列
        for (int i = 0; i < cellList.size(); i++) {
            initExcelCell(row3, style2, cellList.get(i), i);
        }

        //用于底部数据填充找到行数
        int j=0;
        for(int i=0;i<list.size();i++){
            Map r=list.get(i);
            XSSFRow rown = sheet.createRow(4+i);

            //序号
            initExcelCell(rown, style2, i + 1 + "", 0);
            //姓名
            initExcelCell(rown, style2, r.get("name").toString(), 1);
            //年龄
            initExcelCell(rown, style2, r.get("age").toString(), 2);
            //地址
            initExcelCell(rown, style2, r.get("adree").toString(), 3);
            j++;
        }

        j+=4;
        //合计列
        CellRangeAddress regionx = new CellRangeAddress(j, j, 0,9);
        XSSFRow rowx = sheet.createRow(j);
        initExcelCell(rowx,style2,"合     计",0);
        //给合并单元格加边框
        setRegionBorder(BorderStyle.THIN, regionx,sheet);
        sheet.addMergedRegion(regionx);
        j++;
        //最后一行
        CellRangeAddress regionl = new CellRangeAddress(j, j, 0, 3);
        CellRangeAddress regionl1 = new CellRangeAddress(j, j, 4, 6);
        CellRangeAddress regionl2 = new CellRangeAddress(j, j, 7, 9);
        CellRangeAddress regionl3 = new CellRangeAddress(j, j, 10, 13);

        sheet.addMergedRegion(regionl);
        sheet.addMergedRegion(regionl1);
        sheet.addMergedRegion(regionl2);
        sheet.addMergedRegion(regionl3);
        XSSFCellStyle style3 = workbook.createCellStyle();
        style3.setAlignment(HorizontalAlignment.LEFT);
        style3.setVerticalAlignment(VerticalAlignment.CENTER);

        XSSFRow rowx1 = sheet.createRow(j);
        //制表日期
        initExcelCell(rowx1, style3, "制表日期: " + DateUtils.format(new Date()), 0);
        //制表人
        initExcelCell(rowx1,style3,"制表人:",4);
        sheet.setDefaultRowHeight((short)450);
        sheet.setColumnWidth(2, 12*256);
        sheet.setColumnWidth(3, 20*256);
        try {
            response.flushBuffer();
            workbook.write(response.getOutputStream());
            response.setContentType("application/octet-stream");
            response.setHeader("Content-disposition",
                    "attachment;filename=" + java.net.URLEncoder.encode("jm.xlsx", "UTF-8"));
        } catch (Exception e) {
            e.printStackTrace();
            response.setContentType(MediaType.APPLICATION_JSON_VALUE);
            throw new RuntimeException("导出明细异常");
        }
    }

    private void initExcelCell(XSSFRow row, XSSFCellStyle cellStyle, String cellValue,int index) {
        XSSFCell cell = row.createCell(index);
        cell.setCellStyle(cellStyle);
        cell.setCellValue(cellValue);
    }

    private  void setRegionBorder(BorderStyle border, CellRangeAddress region, Sheet sheet){
        RegionUtil.setBorderBottom(border,region, sheet);
        RegionUtil.setBorderLeft(border,region, sheet);
        RegionUtil.setBorderRight(border,region, sheet);
        RegionUtil.setBorderTop(border,region, sheet);
    }

就是这么简单 没了文章来源地址https://www.toymoban.com/news/detail-524858.html

到了这里,关于ExcelExportUtil基于模板导出excel&POI导出excel的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 【Go】excelize库实现excel导入导出封装(三),基于excel模板导出excel

    大家好,这里是符华~ 关于excelize库实现excel导入导出封装,我已经写了两篇了,我想要的功能基本已经实现了,现在还差一个模板导出,这篇文章就来讲讲如何实现用模板导出excel。 前两篇: 【Go】excelize库实现excel导入导出封装(一),自定义导出样式、隔行背景色、自适应

    2024年01月25日
    浏览(40)
  • java poi导入Excel、导出excel

    java poi导入Excel、导出excel ReadPatientExcelUtil PoiUtils FileUtils

    2024年02月15日
    浏览(25)
  • POI 实现Excel导入导出

    什么是POI Apache POI 是用Java编写的免费开源的跨平台的 Java API,Apache POI提供API给Java程序对Microsoft Office格式档案读和写的功能。POI为“Poor Obfuscation Implementation”的首字母缩写,意为“简洁版的模糊实现”。 生成xls和xlsx有什么区别呢? XLS XLSX 只能打开xls格式,无法直接打开x

    2024年02月03日
    浏览(29)
  • Java使用POI导出Excel

    在项目开发中往往需要使用到Excel的导入和导出,导入就是从Excel中导入到DB中,而导出就是从DB中查询数据然后使用POI写到Excel上。 操作Excel目前比较流行的就是 Apache POI 和阿里巴巴的 easyExcel ! 废话不多说,开始撸起来!!! POI官网;https://poi.apache.org/ POI官网API:https://poi.

    2024年02月04日
    浏览(29)
  • Apache POI 导出Excel报表

    大家好我是苏麟 , 今天聊聊Apache POI . 介绍 Apache POI 是一个处理Miscrosoft Office各种文件格式的开源项目。简单来说就是,我们可以使用 POI 在 Java 程序中对Miscrosoft Office各种文件进行读写操作。 一般情况下,POI 都是用于操作 Excel 文件。 官网 : Apache POI - the Java API for Microsoft Do

    2024年01月17日
    浏览(32)
  • Poi实现根据word模板导出-图表篇

    往期系列传送门: Poi实现根据word模板导出-文本段落篇 (需要完整代码的直接看最后位置!!!) 前言: 补充Word中图表的知识: 每个图表在word中都有一个内置的Excel,用于操作数据。 内置Excel有类别、系列、值三个概念: poi可以获取word中的图表对象,通过这个图表对象来

    2024年02月02日
    浏览(30)
  • poi实现Excel文件的导入导出

    poi结构说明 引入poi依赖包 第一步、获取表内容数据: 根据表头内容与实体类属性对应的map,利用反射机制获取get方法来取出该实体数据 第二步、开始导出 编辑表格内样式 第三步、设定响应请求头格式,发送文件到客户端 判断表格行数据是否为空 判断表格列值是否为空 设

    2024年02月12日
    浏览(33)
  • Java Poi导出Excel表格详解

    一、导出下面的表格 二、流程详解         1、导出excel需要先将数据准备好         2、创建工作傅对象SXSSFWorkbook         3、使用工作傅对象创建sheet对象(工作页)         4、使用sheet对象创建行对象row(行对象)         5、使用row对象创建cell对象(单元格

    2024年02月10日
    浏览(33)
  • POI实现Excel多行复杂表头导出

    1. 定义表头标题 2. 编写导出/生成Excel工具类 3. 测试 测试结果

    2024年01月19日
    浏览(40)
  • 自定义excel通过poi导出下载

    2024年02月13日
    浏览(32)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包