Chimm.Excel —— 使用Java 操作 excel 模板文件生成 excel 文档

Chimm.Excel —— 设置模板,填充数据,就完事儿了~

            _____ _     _                       _____             _ 
           /  __  |   (_)                     |  ___|           | |
           | /  / |__  _ _ __ ___  _ __ ___   | |____  _____ ___| |
           | |   | '_ | | '_ ` _ | '_ ` _   |  __ / / __/ _  |
           | __/ | | | | | | | | | | | | | |_| |___>  

1. 项目介绍

1.1 项目简介

  1. Chimm.Excel 是什么?
    该程序是一个基于 Apache POI 和 Antlr4 打造的 excel 生成的 Java 工具,主要作用在于减少了开发人员通过程序生成表格的工作量,提高了工作效率。

  2. Chimm.Excel 的优势是什么?

    • 和网上部分的开源软件的区别是,该程序是基于 excel 模板进行工作的,并非基于注解。也就是说,我们首先需要在 office 中编写好我们的 excel 模板才行,优势在于,我们可以直接在 office 中就直接定制化表格的样式,也就是说,样式直接由 excel 软件进行控制了,这大大降低了我们在程序中操作样式的时间。
    • 由于该程序是基于 Antlr4 进行开发的,所以在变量定义上面,非常的灵活,我们可以定义集合变量,甚至我们还可以在公式中定义变量。一个表格对应一个数据对象,开发人员只需查询数据、组装数据即可。
    • 可以自定义模板样式,该程序也提供了部分操作表格样式的功能,如:复制一行、合并单元格、更改边框样式等等。
    • 主要的重点功能暂时介绍这么多,这些功能基本能解决绝大部分问题了。如果各位遇到了其他需要解决的应用场景,欢迎评论提出 issue,我们一起探讨。
  3. excel 模板如何生成?
    模板生成非常的简单,我们定义变量的时候,只需要使用 $ + 大小括号 包围的形式即可,如:${school.name}

  4. Chimm.Excel 功能简介(v1.0)

    • 导出excel二进制文件
    • 根据模板中的变量,将值写入
    • 支持公式
      • 支持带变量的公式,如:SUM(A1,A2,${demo.value})
    • 操作表格添加/减少行
      • ⭐️添加行会自动更新公式
    • 合并单元格
    • 更改单元格边框样式(加粗、虚线等)

1.2 项目地址

  • GitHub:https://github.com/chimmhuang/chimm.excel
  • 码云:https://gitee.com/chimmhuang/chimm.excel

2. 功能展示

2.1 demo文件演示

模板文件:

模板文件

处理后的文件:

处理后的文件

我提供了一个 demo 测试类。
模板具体位置: src/test/resources/demo.xlsx
测试类的具体位置:src/test/java/../demo/Demo.java

2.2 详细操作说明

  1. wiki(GitHub):点击前往
  2. wiki(码云):点击前往
  3. 我在 src/test/java/../demo/Demo.java 中,写了一个测试方法,该方法几乎包含了最常用的方法,可以提供参照。

3. 起步

  1. 配置模板
    我在该项目中提功能 demo 使用的模板,基本满足绝大部分场景:src/test/resources/demo.xlsx
  2. 导入坐标
com.github.chimmhuangchimm.excel1.0
  1. 入门程序
@Test
public void testFillInTable() throws Exception {
    // 获取文件的二进制
    File file = new File("src/test/resources/demo.xlsx");
    byte[] bytes = FileUtils.readFileToByteArray(file);

    // 通过 ExcelHelper 获取 excel 表格对象
    ExcelWorkbook excelWorkbook = ExcelHelper.createWorkbook(bytes);

    // 获取指定的 sheet 页
    SheetTable table = excelWorkbook.getSheet(0);

    // 封装表格数据对象
    SchoolReportData tableData = new SchoolReportData();

    // ... 填充数据 ...
    tableData.setTitle("xx中学成绩单");
    // ... 省略了添加数据的代码 ...
    
    // 将封装好的表格对象,填充到 excel 表格中
    ExcelHelper.fillInData(table, tableData);

    // 将表格对象转换为二进制,resultBytes 即是最终想要的结果
    byte[] resultBytes = ExcelHelper.convert2Byte(table);
}

4. 参与贡献

非常欢迎你的加入!提一个 Issue 或者提交一个 Pull Request。

5. 联系作者

QQ & 微信905369866
emailchimmhuang@163.com

6. 开源协议

Apache 2.0 © Chimm Huang

【信息由网络或者个人提供,如有涉及版权请联系COOY资源网邮箱处理】

© 版权声明
THE END
喜欢就支持一下吧
点赞10 分享
评论 抢沙发

请登录后发表评论

    暂无评论内容