• List<Map>来导出Excel数据


    1.基于项目开发的业务需求,导出部分字段的Excel,写出了如下的通用的方法,基于POI 3.10-FINALjar包开发

      1 import java.io.FileNotFoundException;
      2 import java.io.FileOutputStream;
      3 import java.io.IOException;
      4 import java.text.SimpleDateFormat;
      5 import java.util.Date;
      6 import java.util.Iterator;
      7 import java.util.List;
      8 import java.util.Map;
      9 import java.util.Set;
     10 
     11 import org.apache.poi.hssf.usermodel.HSSFWorkbook;
     12 import org.apache.poi.ss.usermodel.Cell;
     13 import org.apache.poi.ss.usermodel.CellStyle;
     14 import org.apache.poi.ss.usermodel.Row;
     15 import org.apache.poi.ss.usermodel.Sheet;
     16 import org.apache.poi.ss.usermodel.Workbook;
     17 import org.apache.poi.xssf.usermodel.XSSFWorkbook;
     18 import org.slf4j.Logger;
     19 import org.slf4j.LoggerFactory;
     20 
     21 import com.epichust.unimax.client.dao.QisRecordDao;
     22 
     23 public class ExportExcel
     24 {
     25     private static Logger logger = LoggerFactory.getLogger(QisRecordDao.class);
     26     public static boolean exportExcel(String fileName, String title, String[] headers, List<Map> dataset, String pattern)
     27     {
     28         boolean flag = false;
     29         Workbook workbook = null;
     30         if (fileName.endsWith("xlsx"))
     31         {
     32             workbook = new XSSFWorkbook();
     33         } else if (fileName.endsWith("xls"))
     34         {
     35             workbook = new HSSFWorkbook();
     36         } else
     37         {
     38             try
     39             {
     40                 throw new Exception("invalid file name, should be xls or xlsx");
     41             } catch (Exception e)
     42             {
     43                 logger.info("必须是xls或者xlsx结尾的文件.");
     44                 e.printStackTrace();
     45             }
     46             
     47         }
     48 
     49         Sheet sheet = workbook.createSheet(title);
     50           CellStyle style = workbook.createCellStyle();
     51         
     52         // 列名
     53         Row row = sheet.createRow(0);
     54         for (int i = 0; i < headers.length; i++)
     55         {
     56             Cell cell = row.createCell(i);
     57             sheet.setColumnWidth(i, 5000);
     58             style.setAlignment(CellStyle.ALIGN_CENTER);
     59             cell.setCellValue(headers[i]);
     60         }
     61 
     62         Iterator<Map> it = dataset.iterator();
     63         int index = 0;
     64         while (it.hasNext())
     65         {
     66             index++;
     67             row = sheet.createRow(index);
     68             
     69             Map map = it.next();
     70             logger.info(map.toString());
     71             Set<String> mapKey = (Set<String>)map.keySet();
     72             logger.info(mapKey.toString());
     73             Iterator<String> iterator = mapKey.iterator();
     74             logger.info(iterator.toString());
     75             int num  = 0;
     76             while(iterator.hasNext()){
     77                 Cell cell = row.createCell(num);
     78                 num++;
     79                 String key = iterator.next();
     80                 logger.info(key);
     81                 Object obj = map.get(key);
     82                 if (obj instanceof Date)
     83                 {
     84                     SimpleDateFormat sdf = new SimpleDateFormat(pattern);
     85                     cell.setCellValue(sdf.format(obj));
     86                 } else if (obj instanceof Integer)
     87                 {
     88                     cell.setCellValue((Integer) obj);
     89                 } else if (obj instanceof Double)
     90                 {
     91                     cell.setCellValue((Double) obj);
     92                 } else
     93                 {
     94                     cell.setCellValue((String) obj);
     95                 }
     96             }
     97         }
     98         FileOutputStream fos;
     99         try
    100         {
    101             fos = new FileOutputStream(fileName);
    102             workbook.write(fos);
    103             fos.close();
    104             flag = true;
    105         } catch (FileNotFoundException e)
    106         {
    107             logger.info("文件不存在");
    108             flag = false;
    109             e.printStackTrace();
    110         } catch (IOException e)
    111         {
    112             logger.info("文件写入错误");
    113             flag = false;
    114             e.printStackTrace();
    115             
    116         }
    117         return flag;
    118     }
    119 }
    高质量的代码就是对程序自己最好的注释。当你打算要添加注释时,问问自己,“我如何能改进编码以至于根本不需要添加注释?”改进你的代码,然后才是用注释使它更清楚。
  • 相关阅读:
    类的加载机制与反射 笔记
    json
    人人都是产品经理 笔记
    java IO
    jcrop+jquery+javaweb 实现头像裁剪、上传
    C++学习-3
    C++学习-2
    C++学习-1
    Django高级部分
    Django---模板
  • 原文地址:https://www.cnblogs.com/endy-blog/p/3682142.html
Copyright © 2020-2023  润新知