加入依赖:
<dependency>
<goupId>con.alibaba</groupId>
<artifactId>easyexcel</artifactId>
<version>2.2.6</version>
</dependency>
/**
*excelTitles :excel的title
*dataList:数据集合
*clumnKey:key表示一行的第几个cell,value和IndicatorDataRespDTO的属性名对应
**/
private void loadExcelUtil(List<String> excelTitles ,List<IndicatorDataRespDTO dataList,
HashMap<Integer,String> clumnKey,HttpServletResponse response){
//FileOutStream fs = null;
OutputStream os = null;//下载到浏览器端的流
try{
String date = new SimpleDateFormat("yyyyMMddHHmmss").format(new Date());
//服务器端下载
//String fileName = "D:\\"+date+".xlsx";
//fs = new FileOutputStream(new File(fileName));
//浏览器端下载
String fileName1 = date+".xlsx";
response.reset();
response.addHeader("Content-Disposition","attachment;filename="+fileName1);
os = new BufferedOutputStream(response.getOutputStream());
response.setContentType("application/vnd.ms-excel;charset=utf-8");
//创建Excel
//ExcelWriter writer = EasyExcelFactory.write(fs).build();
ExcelWriter writer = EasyExcelFactory.write(os).build();
//创建sheet
Sheet sheet = new Sheet(0);
sheet.setSheetName("sheet");
//创建table
Table table = new Table(1);
//把excel头组装成List<List<String>>
List<List<String>> titleList = Lists.newArrayList();
List<String> title = null;
for(String excelTitle :excelTitels){
title = Lists.newArrayList();
title.add(excelTitle);
titleList.add(title);
}
table.setHead(titleList);
//转为json,直接由columnKey的value对应对象的属性名
JSONArray data = JSONObject.parseArray(JSONObject.toJSONString(dataList));
JSONObject ob = null;
String columnName = null;
List<String> columnData = null;
//数据也组装成List<List<String> >
List<List<String>> columnDataAll = Lists.newArrayList();
for(int i =0;i<data.size();i++){ // data有多少就有多少行
ob = data.getJSONObjec(i);
columnData = Lists.newArrayList();
for(int cellnum=0;cellnum<columKey.size();cellnum++){ //columKey是map结构:0,deptName;决定了一行有多少列
columnName = columnKey.get(cellnum); //比如现在的columName是deptName
columnData.add(ob.getString(columnName ));
}
columnDataAll.add(columnData);
}
//写出
writer.write1(coumnDataAll,sheet,table);
writer.finish();
}finally{
/**if(fs!=null){
try{
fs.close();
}catch(IOException e){
}
}**/
if(os!=null){
try{
os.close();
}catch(IOException e){
}
}
}
}