1.打开模板,并赋值
2.代码
@RestController
@RequestMapping(value = “/re”)
public class ReportController {
@RequestMapping("/report")
public void report(HttpServletRequest request , HttpServletResponse response){
try{
// 循环数据
/* List<Object> list = new ArrayList<>();
for (int i = 0; i < 100; i++) {
Map<String,Object> data = new HashMap<>();
data.put("a1", (int)(Math.random()*100) );
data.put("a2", (int)(Math.random()*100) );
data.put("a3", (int)(Math.random()*100) );
data.put("a4", (int)(Math.random()*100) );
data.put("a5", (int)(Math.random()*100) );
list.add(data);
}*/
// 表格使用的数据
Map map = new HashMap();
//map.put("data",list);
map.put("title","java基于模板导出excel表格");
map.put("val","演示合并单元格的数据显示");
// 获取模板文件
String a="E:\\demoMY\\src\\main\\resources\\demo\\xx.xlsx";
// String a= Thread.currentThread().getContextClassLoader().getResource("demo/man.xlsx").getFile();
System.out.println(a);
InputStream is = new FileInputStream(a);
// 实例化 XLSTransformer 对象
XLSTransformer xlsTransformer = new XLSTransformer();
// 获取 Workbook ,传入 模板 和 数据
Workbook workbook = xlsTransformer.transformXLS(is, map);
// Workbook workbook = xlsTransformer.transformXLS(is,map);
// 设置文件名
response.setHeader("Content-Disposition", "attachment;fileName=" + URLEncoder.encode("报表.xlsx" ,"UTF-8"));
// 写出文件
OutputStream os = new BufferedOutputStream( response.getOutputStream() );
// 输出
workbook.write(os);
// 关闭和刷新管道,不然可能会出现表格数据不齐,打不开之类的问题
is.close();
os.flush();
os.close();
}catch (Exception e){
}
}
}
3.POM文件
org.jxls
jxls
2.6.0
org.jxls
jxls-poi
1.2.0
org.jxls
jxls-jexcel
1.0.9
net.sf.jxls
jxls-core
1.0.6