easypoi独特功能:
-
基于注解的导入导出,修改注解就可以修改Excel
-
支持常用的样式自定义
-
基于map可以灵活定义的表头字段
-
支持一堆多的导出,导入
-
支持模板的导出,一些常见的标签,自定义标签
-
支持HTML/Excel转换,如果模板还不能满足用户的变态需求,请用这个功能
-
支持word的导出,支持图片,Excel
使用:
1.在pom.xml文件导入相关依赖:
<dependency>
<groupId>cn.afterturn</groupId>
<artifactId>easypoi-base</artifactId>
<version>3.2.0</version>
</dependency>
<dependency>
<groupId>cn.afterturn</groupId>
<artifactId>easypoi-web</artifactId>
<version>3.2.0</version>
</dependency>
<dependency>
<groupId>cn.afterturn</groupId>
<artifactId>easypoi-annotation</artifactId>
<version>3.2.0</version>
</dependency>
2.新建xls或者xlsx文件,设置模版(或直接下载一个excel模版)
自建使用规则如下:
-
空格分割
-
三目运算 {{test ? obj:obj2}}
-
n: 表示 这个cell是数值类型 {{n:}}
-
le: 代表长度{{le:()}} 在if/else 运用{{le:() > 8 ? obj1 : obj2}}
-
fd: 格式化时间 {{fd:(obj;yyyy-MM-dd)}}
-
fn: 格式化数字 {{fn:(obj;###.00)}}
-
fe: 遍历数据,创建row
-
!fe: 遍历数据不创建row
-
$fe: 下移插入,把当前行,下面的行全部下移.size()行,然后插入
-
#fe: 横向遍历
-
v_fe: 横向遍历值
-
!if: 删除当前列 {{!if:(test)}}
-
单引号表示常量值 '' 比如'1' 那么输出的就是 1
-
&NULL& 空格
-
]] 换行符 多行遍历导出
-
sum: 统计数据
导入模板例子:
3.新建util.class文件或者在test文件下试用,当前为在test文件下用例试用,代码如下:
@Test
public void fe_map() throws Exception {
TemplateExportParams params = new TemplateExportParams(
"F:/pictures/mode.xlsx");
//导入目标模板文件,"F:/pictures/mode.xlsx"内容换成模版文件path即可
Map<String, Object> map = new HashMap<String, Object>();
map.put("type", "个人");
map.put("rise", "张三");
map.put("identityNumber", "320101199901010000");
map.put("uincode", "2021205503262");
map.put("itemId", "");
map.put("name", "上海+东方明珠+黄浦江游船+外滩+南京路步行街+城隍庙旅游区1天跟团游");
map.put("number", "2");
map.put("fee", 938.00);
map.put("date", "2024-04-29");
map.put("totalPrice", 1876.00);
//对应数据存入map,map的key需要与表格内{{&name}} &name内容一致,value为填充内容
Workbook workbook = ExcelExportUtil.exportExcel(params, map);
//填充模版内容
File savefile = new File("F:/pictures/");
if (!savefile.exists()) {
savefile.mkdirs();
}
FileOutputStream fos = new FileOutputStream("F:/pictures/test_map.xlsx");
workbook.write(fos);
//导出填充后文件为xlsx文件,"F:/pictures/"和"F:/pictures/test_map.xlsx"换成自己的目标文件路径即可
fos.close();
}
4.导出为pdf文件
@Test
public void fe_map() throws Exception {
TemplateExportParams params = new TemplateExportParams(
"F:/pictures/mode.xlsx");
Map<String, Object> map = new HashMap<String, Object>();
map.put("type", "个人");
map.put("rise", "张三");
map.put("identityNumber", "320101199901010000");
map.put("uincode", "2021205503262");
map.put("itemId", "");
map.put("name", "上海+东方明珠+黄浦江游船+外滩+南京路步行街+城隍庙旅游区1天跟团游");
map.put("number", "2");
map.put("fee", 938.00);
map.put("date", "2024-04-29");
map.put("totalPrice", 1876.00);
Workbook workbook = ExcelExportUtil.exportExcel(params, map);
//跟上述代码从这里开始有区别
ByteArrayOutputStream outputStream = new ByteArrayOutputStream();
workbook.write(outputStream);
ByteArrayInputStream inputStream = new ByteArrayInputStream(outputStream.toByteArray());
com.spire.xls.Workbook workbook1 = new com.spire.xls.Workbook();
workbook1.loadFromStream(inputStream);
//pdf 自适应屏幕大小
workbook1.getConverterSetting().setSheetFitToWidth(true);
workbook1.saveToFile("F:/pictures/test_map.pdf");
}
导出pdf文件需要下载一个jar包导入到自己的项目中,目前是jar包导入到IDEA内的springboot项目过程。
下载jar包到本地,
spire.xls.free-3.9.1.jar
点击这个蓝字path内容就是可以下载。
在项目resource文件夹下新建一个jar文件夹,移动下载的jar包到该文件夹下
在pom.xml文件中引入依赖
<dependency>
<groupId>spire.xls.free</groupId>
<artifactId>spire</artifactId>
<version>3.9.1</version>
<scope>system</scope>
<systemPath>${project.basedir}\src\main\resources\jar\spire.xls.free-3.9.1.jar</systemPath>
</dependency>
更新一下maven即可。