当前位置: 代码迷 >> 综合 >> easyExcel下载Excel
  详细解决方案

easyExcel下载Excel

热度:59   发布时间:2024-02-20 04:17:48.0

加入依赖:

<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){
      }
   }
  } 

}

  相关解决方案