使用EasyPoi实现Excel的按模板样式导出

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

模板文件

1690342020350导出测试.xlsx
使用EasyPoi实现Excel的按模板样式导出,后端,excel,前端,数据库,easypoi,横向遍历

导出文件

如下
使用EasyPoi实现Excel的按模板样式导出,后端,excel,前端,数据库,easypoi,横向遍历

1,横向遍历

#fe

使用#fe命令可以实现集合数据的横向拓展,比如模板代码是

{{#fe:maths t.score}}

导出的excel里面就会显示会自当前列,向右拓展,效果可参见下面的导出文件截图

2,横向遍历值

v_fe

使用v_fe命令可以实现不固定列的横向遍历,比如模板代码是

分数 ID
{{#fe:maths t.score t.id}}

这种情况导出的excel就会两列一起向右拓展,效果可参见上面的导出文件截图的最下面一行

3,删除行

方法一:删除空白行

book.getSheetAt(0).removeRow(book.getSheetAt(0).getRow(12))

只是清空第13行内容,行还在

方法二:这行高度设为0

book.getSheetAt(0).getRow(12).setHeight((short)0);

推荐此方法,打印出来的效果就是看不到这行,对于打印功能来说足够了

方法三:shiftRows 删除后下方单元格上移

 book.getSheetAt(0).shiftRows(12,book.getSheetAt(0).getLastRowNum(),5);

api说明

 sheet.shiftRows(startRow,endRow,shiftCount)

参数说明:
startRow:移动的开始行号,从0开始计算, 如果想要删除Excel中的第8行(rownum=7),那么starRow设定为7,即设定为你想删除的那行
endRow: 移动的结束行号,从0开始计算。通过startRow和endRow选定移动的范围。可以用sheet.getLastRowNum:来取得sheet的结尾行号 shiftCount 移动多少行。正数是往下移动的行数,负数是往上移动的行数
这个方法也不能实现真正的删除行

4,日期格式

{{fd:(report_date;yyyy-MM-dd)}}

report_date就是new Date()
通过这个模板命令可以直接转换成想要的日期格式

5,保留几位小数

模板命令

{{#fe:chineses {{fn:(t.score;###.00)}}}}

两个0代表保留两位小数
如果是在sql中处理,那么可以使用round函数,记住一定要加别名

select round(score,2) scoreValue from table

如果是在代码中

String.format("%.2f",(double)(i+70)).toString()

6,换行显示

由于easypoi无法直接实现换行显示list数据,所以只能曲线救国,知道每行显示多少个后,在代码里对list进行截取,在模板里每行使用不同的list文章来源地址https://www.toymoban.com/news/detail-610817.html

		map.put("maths",res.subList(0,8))
        map.put("maths2",res.subList(8,16))
        map.put("maths3",res.subList(16,res.size()))

详细代码


def main(){
        Map<String,Object> map = new HashMap()
        map.put("class_code","GRADE1")
        map.put("model","初三")
        map.put("report_date",new Date())
        map.put("sample_num",30)
        map.put("chinese_standard_value",90)
        map.put("math_standard_value",80)
        // 数学测试数据
        def res = []
        for(int i=0;i<20;i++){
            def data = ["id":i,"score":String.format("%.2f",(double)(i+70)).toString()]
            res.add(data)
        }
        map.put("maths",res.subList(0,8))
        map.put("maths"+"2",res.subList(8,16))
        map.put("maths"+"3",res.subList(16,res.size()))
        // 语文测试数据
        def res2 = []
        for(int i=0;i<20;i++){
            def data = ["id":i,"hello":i+"Hello","score":(i+80.2589).toString()]
            res2.add(data)
        }
        map.put("chineses",res2.subList(0,8))
        map.put("chineses"+"2",res2.subList(8,16))
        map.put("chineses"+"3",res2.subList(16,res2.size()))
        // return map
        def filePrefix = new Date().format("yyyyMMddHHmmss")

        def file = resFileGetter.getByName('1690342020350导出测试.xlsx');
        def templateUrl = file.getAbsolutePath();
        String sheetName = "班级成绩报告";
        TemplateExportParams params = excelApi.buildTmpExportParams(templateUrl,sheetName)
        params.setColForEach(true);
        def book = ExcelExportUtil.exportExcel(params, map);
        def fileName =  "班级成绩报告"+filePrefix+".xlsx"
        ExcelUtils.downLoadExcel(fileName, response, book);
}

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

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

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

相关文章

  • 使用EasyPoi导出Excel

        注意日期类型 注解内要加上: exportFormat = \\\"yyyy-MM-dd hh:mm:ss\\\"   属性字段 属性值 @TableField 这个字段代表数据库表的字段 @Excel name代表导出Excel列名称 @Excel orderNum代表Excel列排在第几列 @Excel replace一般数据库存的性别例如0和1,导出的值0展示为男性,女展示为女性   直接调用

    2023年04月15日
    浏览(34)
  • 使用原生POI和EasyPoi根据word模板导出word工具类

    前两天接了个需求,要求将数据导出成word,里边有边个,有其他的东西,怎么说这,这个需求最开始就是上传word,下载附件就行了,非得改成上传数据然后支持下载word。有股脱裤子放屁的感觉 而且呢,当时做的时候前任开发在数据库存了一个巨大的Json文件,解析也挺费劲的

    2024年01月25日
    浏览(42)
  • 【业务功能篇47】Springboot+EasyPoi 实现Excel 带图片列的导入导出

    SpringBoot整合EasyPoi实现Excel的导入和导出(带图片)_51CTO博客_springboot easypoi导出excel

    2024年02月16日
    浏览(34)
  • 如何使用Java 实现excel模板导出---多sheet导出?

    效果展示: maven依赖 相关工具类 **此处省略异常处理类 ExcelReportUtil 类 excel 接口 实现类 excel填充数据处理类 excel填充处理类 excel模板处理 实现关键代码展示 通过模板实现导出功能 ExcelReportCreator 中的代码 导入数据案例展示 excel模板批注案例 每个sheet页都需要写批注,通过批

    2024年02月15日
    浏览(28)
  • Easypoi word 模板导出问题

    按word模板导出报错 源代码:  报的错误信息: 错误原因:linux环境路径找不到 linux 环境打印路径如下: templateFile.getPath():file:/home/sjzx/backend/admin/sjzx-admin-1.0-SNAPSHOT.jar!/BOOT-INF/classes!/word/template.docx windos环境打印路径ruxi templateFile.getPath():D:workplacesjzx-backendsjzx-admintargetclasse

    2024年02月01日
    浏览(28)
  • 后端:使用easyExcel实现解析Excel文件读取数据。前端:Excel模板下载、前端上传文件

            本篇是EasyExcel快速入门知识,讲解如何读取Excel文件,对Excel中错误信息如空字符、必填项为空、表格格式校验做到处理 ,并给出了实际项目中示例代码;为什么要使用easyexcel;原因是相比于poi,easyexcel更加轻量级,读取写入API方便,并且在工作中占用内存较小;

    2024年02月05日
    浏览(48)
  • EasyPoi快速入门(Excel导入导出工具)

    简介: easypoi是一款Excel快速导入导出的工具,最近有所使用,结合了网上的一些用法和官方文档的介绍,在在这里总结一下最简单的esaypoi导入Excel的实现,网上很多教程都已经封装了工具类,虽然方便,但第一次接触easypoi可能看的不是清晰,现在总结一下最为直观的SpringBoot集成easypoi快

    2023年04月22日
    浏览(32)
  • 工具类——Java导出EXCEL2(设置样式、加载并填充图片、加载指定模板、大数据量设置窗口大小与刷新频率)

    书接上篇:工具类——Java 浏览器导入、导出Excel(Java import、export)demo POI的导出方式:创建/加载Workbook,设置样式,填充数据,然后生成本地临时文件,最终以浏览器的形式打开,完成整个导出动作。 demo如下, demo如下, XSSFClientAnchor anchor = new XSSFClientAnchor(int dx1, int dy1,

    2024年02月01日
    浏览(29)
  • 【Easypoi & Apache poi】 Java后端 Word导入与导出

            如果这里造成了读取resources下的文件返回前端乱码问题:除了HttpServletResponse响应中设置字体问题,还有可能是因为在编译期文件就已经乱码了,所以需要在pom.xml中增加以下配置。

    2024年02月11日
    浏览(37)
  • JAVA之利用easypoi将word模板导出为pdf(可带图片)

    EasyPoi是一款基于POI的Java快速导出/导入Excel工具。它在POI的基础上进行了封装,提供了更加简洁易用的API,使得生成Excel文件更加容易和高效。 使用EasyPoi可以轻松地生成Excel文件,并支持多种格式,如xlsx、xls、csv等。同时,EasyPoi也支持读取Excel文件,可以方便地获取其中的数

    2024年02月08日
    浏览(36)

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

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

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

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

二维码1

领取红包

二维码2

领红包