Java中实现excel导出数据的方法有很多,一般简单的可以通过操作POI进行,但是复杂的excel格式导出如果用POI就显得非常麻烦,本文介绍的jxls2.0完全依据模板进行导出,只需要进行简单的配置加数据,即可导出人工处理级别的复杂excel格式,因此写下几个系列教程供大家参考。
普通循环列表导出是一个非常简单的需求,实现它的方式有两种Api
方式一:jxls-core依赖(功能较弱,不推荐)
<dependency>
<groupId>net.sf.jxls</groupId>
<artifactId>jxls-core</artifactId>
<version>1.0.5</version>
</dependency>
另外需要注意一点:很多同学在做模板类型数据导出的时候,频繁遇到导出后文件格式打不开的情况,这个时候最有可能导致的错误不是代码有问题,而是因为模板文件被编译成了二进制文件,因此对于这一点需要特别处理,现在大多都是用Maven作为管理工具,对于Maven需要特别的配置如下:
<build>
<plugins>
<!-- 对xls模板打包但不编译 -->
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-resources-plugin</artifactId>
<configuration>
<nonFilteredFileExtensions>
<nonFilteredFileExtension>xls</nonFilteredFileExtension>
</nonFilteredFileExtensions>
</configuration>
</plugin>
</plugins>
</build>
是否是这个错误也很好检查,办法如下:
手动打开target包下对应的模板文件,看是否会报格式错误,自然就会明白问题到底出在哪一步了
具体实现代码非常简单,就直接贴出来了:
/***
* 数据导出
* @param request
* @param model
* @return
*/
@RequestMapping(value = "/monitoring/exportExcel")
public void exportExcel(HttpServletRequest request, HttpServletResponse response, HttpSession session, Model model) throws Exception {
// List集合 此处省略
List<Test> test = new ArrayList<>();
// 加入到模板集合中
Map<String, Object> datamap = new HashMap<>();
datamap.put("test", test);
try {
// 获取模板绝对路径
String path = session.getServletContext().getRealPath("");
// 模板文件路径