1、首先在pom文件添加三个依赖:
<dependency>
<groupId>org.jxls</groupId>
<artifactId>jxls</artifactId>
<version>2.10.0</version>
</dependency>
<dependency>
<groupId>org.jxls</groupId>
<artifactId>jxls-poi</artifactId>
<version>2.10.0</version>
</dependency>
<dependency>
<groupId>org.jxls</groupId>
<artifactId>jxls-jexcel</artifactId>
<version>1.0.9</version>
</dependency>
2、示例代码:
1)创建一个实体类:
@Data public class Person { private String name; private String age; private String sex; private String post; private String sal; }
2)实现如下:
@GetMapping("/export")
public void export(HttpServletResponse response){
boolean flag = true;
List<Person> record = new ArrayList<>();
for (int i = 0; i < 2; i++) {
Person p = new Person();
p.setName("kkm00"+i);
p.setAge("30");
p.setSex("man");
p.setPost("资深架构师"+i);
p.setSal("百万年薪");
record.add(p);
}
//封装参数
Map<String,Object> map = new HashMap();
map.put("record",record);
map.put("name","KKM");
//获取模板
@GetMapping("/export")
public void export(HttpServletResponse response){
boolean flag = true;
List<Person> record = new ArrayList<>();
for (int i = 0; i < 2; i++) {
Person p = new Person();
p.setName("kkm00"+i);
p.setAge("30");
p.setSex("man");
p.setPost("资深架构师"+i);
p.setSal("百万年薪");
record.add(p);
}
//封装参数
Map<String,Object> map = new HashMap();
map.put("record",record);
map.put("name","KKM");
//获取模板
try {
//resource目录下的文件
ClassPathResource resource = new ClassPathResource("excel/InfoTemplate.xls");
InputStream inputStream =resource.getInputStream();
String fileName = "收入明细"+new Date().getTime();
String fileNameEncoding = URLEncoder.encode(fileName,"utf-8");
response.setContentType("application/vnd.ms-excel");
response.setHeader("Content-disposition","attachment;filename="+fileNameEncoding+".xls");
ServletOutputStream outputStream =response.getOutputStream();
Context context = new Context();
context.putVar("data",map);
JxlsHelper.getInstance().processTemplate(inputStream,outputStream,context);
outputStream.close();
inputStream.close();
LOGGER.info("入库单导出成功");
} catch (IOException e) {
LOGGER.error("入库单导出异常",e);
e.printStackTrace();
}
}
注意:
1、文件路径一般放在resource目录下:
2、每行的记录数据,首行记录的第一列要写批注信息,如下:
Administrator:
jx:each(items=”data.record” var=”record” lastCell=”Q4”)
说明:
data是context设置的变量;record是记录,一般是一个集合;lastCell值的是Excel表格的第几行,如图:
3、运行效果: