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




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

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)

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

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. 导入坐标
<dependency>
<groupId>com.github.chimmhuang</groupId>
<artifactId>chimm.excel</artifactId>
<version>1.0</version>
</dependency>
  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

Chimm.Excel —— 使用Java 操作 excel 模板文件生成 excel 文档的更多相关文章

  1. [转]java 根据模板文件生成word文档

    链接地址:https://blog.csdn.net/ai_0922/article/details/82773466

  2. Java 导出数据库表信息生成Word文档

    一.前言 最近看见朋友写了一个导出数据库生成word文档的业务,感觉很有意思,研究了一下,这里也拿出来与大家分享一波~ 先来看看生成的word文档效果吧 下面我们也来一起简单的实现吧 二.Java 导 ...

  3. Java 读取txt文件生成Word文档

    本文将以Java程序代码为例介绍如何读取txt文件中的内容,生成Word文档.在编辑代码前,可参考如下代码环境进行配置: IntelliJ IDEA Free Spire.Doc for Java T ...

  4. velocity模板技术生成word文档

    本文介绍採用velocity技术在Java中生成word文档的方法. 1.新建一个word文档,编辑内容例如以下: 2.将上述word文档另存为htm格式的文件 3.新建一个Java Project项 ...

  5. WebAPI使用多个xml文件生成帮助文档

    一.前言 上篇有提到在WebAPI项目内,通过在Nuget里安装(Microsoft.AspNet.WebApi.HelpPage)可以根据注释生成帮助文档,查看代码实现会发现是基于解析项目生成的xm ...

  6. WebAPI使用多个xml文件生成帮助文档(转)

    http://www.cnblogs.com/idoudou/p/xmldocumentation-for-web-api-include-documentation-from-beyond-the- ...

  7. 使用freemarker模板引擎生成word文档的开发步骤

    1.准备模板文档,如果word文档中有表格,只保留表头和第一行数据:2.定义变量,将word文档中的变量用${var_name}替换:3.生成xml文件,将替换变量符后的word文档另存为xml文件: ...

  8. 【转】WebAPI使用多个xml文件生成帮助文档

    来自:http://www.it165.net/pro/html/201505/42504.html 一.前言 上篇有提到在WebAPI项目内,通过在Nuget里安装(Microsoft.AspNet ...

  9. C# 读取txt文件生成Word文档

    本文将以C#程序代码为例介绍如何来读取txt文件中的内容,生成Word文档.在编辑代码前,可参考如下代码环境进行配置: Visual Studio 2017 .Net Framework 4.6.1 ...

随机推荐

  1. Java成神之路:第三帖----数据结构与算法之队列

    数据结构与算法--队列 今天掉了两根头发,摸掉的,记得 别乱摸,很珍贵的!! 什么是队列? 1)队列是一个有序列表,可以用数组或是链表来实现 2)遵循 先入先出 的原则.即:先存入队列的数据,要先取出 ...

  2. apache OS 10013 问题

    问题描述 (OS 10013)通常每个套接字地址 (协议/网络地址/端口) 只允许使用一次: make_sock: could not bind to address 0.0.0.0:80 解决方法 ...

  3. 第一篇 Hell wcf

    老老实实学WCF  第一篇 Hello WCF WCF(Windows Communication Foundation)是微软公司推出的面向服务技术的集大成者,涵盖继承了其之前发布的所有的分布式应用 ...

  4. SSH登录问题 .ssh/known_hosts和 ECDSA key

    问题描述: fakerdeMacBook-Pro:~ faker$ ssh root@123.***.***.34 @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ ...

  5. 手把手教你在容器服务 TKE 上使用 LB 直通 Pod

    什么是 LB 直通 Pod ? Kubernetes 官方提供了 NodePort 类型的 Service,即给所有节点开一个相同端口用于暴露这个 Service,大多云上 LoadBalancer ...

  6. php基础复习

    基础捡漏: 1.短标记<??> 通过修改ini文件的short_open_tag或编译时 --enable-short-tags 可用 不推荐使用. 2.?>默认有隐藏分号结束,而文 ...

  7. python一些小trick

    数据去重 lst = ['1','2','3','3'] lst = list(set(lst)) 不同根目录下引用另一个库 例如 |--a--a.py |--b--b.py 在b.py中调用库a.p ...

  8. python_用户登录验证

    登录验证,三次机会,如何做? 1. 一个用户列表记录合法密码和用户名,一个小黑屋列表记录输错3次的用户, 一个中间列表记录所有用户输入,统计某个用户是否输错3次 2. 通过 in 判断一个元素是否在一 ...

  9. Django_项目开始

    如何初始Django运行环境? 1. 安装python 2. 创建Django项目专用的虚拟环境 http://www.cnblogs.com/2bjiujiu/p/7365876.html 3.进入 ...

  10. Linux安装软件方法总结

    相比于windows系统,Linux安装程序就比较复杂了,很多需要root用户才能安装.常见的有以下几种安装方法 源码安装 rpm包安装 yum安装 (RedHat.CentOS) apt-get安装 ...