ExcelTool
灵活简单,将javabean数据转换成excel
Install / Use
/learn @giantray/ExcelToolREADME
##概述 通过对Jxl包的简单封装,这个组件提供了一个更加灵活、简单地生成excel表格的方法。 在生成excel时,你只需编码,把数据塞到指定的bean中,之后生成excel的其他细节,交给这个工具。这个工具已经对excel样式做了较佳的设置,可以省却你调试excel样式的痛苦
##特性
- 解耦 在jxl包基础上做了小扩展,程序员只要专注塞数据——把数据塞到我们提供的bean。之后bean转excel,由这个组件搞定。该组件已经优化了表格样式,可以省却调试excel样式的痛苦
- 灵活排序 可以很方便地调整每列的先后顺序
- 宽度自适应 针对中文做优化,确保excel表格能依据文字宽度确定每个表格宽度
- 值类型自动识别 检测每个表格的内容,是数字、字符串、还是时间,依据类型的不同,做人性化、合理的显示
##引入 maven依赖
<dependency>
<groupId>com.github.giantray</groupId>
<artifactId>exceltool</artifactId>
<version>0.95</version>
</dependency>
当前版本为0.95
##如何使用 提供了两种使用方式,一种是基于传参的方式,一种是基于注解的方式。
###2、基于传参 所谓基于参数,是指excel中要展示的列,列名,顺序等通过构建一个参数bean来指定。
2.1、在MainTest类中,提供了一个测试类,为你演示了如何生成,建议您直接看看测试类中的demo。下面介绍这个demo
2.2、首先,demo代码中,会将数据塞到ExportExcelBean这个类中
List<Object> li = new ArrayList<Object>();
TestBean testBean = new TestBean();
testBean.setIntTest(8888);
testBean.setStrTest("88888.888");
testBean.setTimeTest(new Timestamp(System.currentTimeMillis()));
for (int i = 0; i < 1000; i++) {
li.add(testBean);
}
LinkedHashMap<String, String> keyMap = new LinkedHashMap<String, String>();
keyMap.put("timeTest", "time类型");
keyMap.put("intTest", "int类型");
keyMap.put("strTest", "string类型");
List<ExportExcelBean> sheetContentList = new ArrayList<ExportExcelBean>();
ExportExcelBean bean1 = new ExportExcelBean();
bean1.setContentList(li);
bean1.setKeyMap(keyMap);
bean1.setSheetName("测试1");
ExportExcelBean bean2 = new ExportExcelBean();
bean2.setContentList(li);
bean2.setKeyMap(keyMap);
bean2.setSheetName("测试2");
sheetContentList.add(bean1);
sheetContentList.add(bean2);
如上所示演示了将一些测试数据填入到ExportExcelBean中。ExportExcelBean有三个属性
sheetname:表名。在一个excel文件中,允许存在多个表。每个表的名字,一般会在excel左下角显示,如下所示

contentList:要填充的内容。表的每一行,是一个对象,多个对象一起,就组成了这个contentList。对象的类,可以依据你自己的实际情况,用自己写的类。本文例子中,是将数据填充到TestBean 这个类中
keyMap:表列名及属性映射关系。请注意,这是一个LinkedHashMap,也就是说,是有顺序先后性的。之后你要调整每一列的顺序,也只要调整这里的顺序即可 如例子中这三行代码,表示表的第一列,列的标题为time类型,填充的值为TestBean 类中timeTest这个属性。第二列标题则为“int类型”,填充TestBean 中intTest属性
keyMap.put("timeTest", "time类型");
keyMap.put("intTest", "int类型");
keyMap.put("strTest", "string类型");
###3、基于注解 基于注解的方式,指的是excel的列,列名,顺序等由源数据bean中的注解来指定。测试类TestExtend演示了这个方式
@ExcelSheet(name = "这是表的名字", order = "strTest,intTest")
public class TestBean {
@SheetCol("字符串")
private String strTest;
@SheetCol("数字")
private int intTest;
@SheetCol("时间")
private Timestamp timeTest;
//这里省略get、set方法
}
这里假设我们要将List<TestBean>的数据输出为excel,可以像上面这样做注解。
- 注解ExcelSheet,name属性指定了表的名字,order属性指定了列的顺序,其中的值是bean中的属性名,多个属性用逗号隔开
- 注解SheetCol,带有这个注解的属性,才会被输出到excel中,且表头的列名,为这里指定的名字
之后调用exportByAnnotation方法,就可以得到excel文件
Related Skills
node-connect
350.1kDiagnose OpenClaw node connection and pairing failures for Android, iOS, and macOS companion apps
frontend-design
109.9kCreate distinctive, production-grade frontend interfaces with high design quality. Use this skill when the user asks to build web components, pages, or applications. Generates creative, polished code that avoids generic AI aesthetics.
openai-whisper-api
350.1kTranscribe audio via OpenAI Audio Transcriptions API (Whisper).
qqbot-media
350.1kQQBot 富媒体收发能力。使用 <qqmedia> 标签,系统根据文件扩展名自动识别类型(图片/语音/视频/文件)。
