zoukankan      html  css  js  c++  java
  • l创建Excel文件

    最近的项目中遇到需要将List<Map<String,String>>存储到Excel文件中,为满足此需求设计实现了如下函数:

        

     1     /**
     2      * 将MapList转化为Excel文件
     3      * @param excelFile--excel文件的路径
     4      * @param mapList---要存储的mapList
     5      * @param titles----对应的列名称
     6      * @param enTitles---列名称map的keys数组
     7      * @throws Exception
     8      */
     9     public void mapListToExcel(String excelFile,List<Map<String, String>> mapList, Map<String, String> titles, String[] enTitles) throws Exception{
    10         FileOutputStream fos=new FileOutputStream(excelFile);  
    11         HSSFWorkbook workbook = new HSSFWorkbook();
    12         HSSFCellStyle style = workbook.createCellStyle();
    13         List<HSSFSheet> sheets = new ArrayList<HSSFSheet>();
    14         /**
    15          * 设置其它数据风格
    16          */
    17         style.setBorderBottom(HSSFCellStyle.BORDER_THIN); // 设置单无格的边框为粗体
    18         style.setBottomBorderColor(HSSFColor.BLACK.index); // 设置单元格的边框颜色.
    19         style.setBorderLeft(HSSFCellStyle.BORDER_THIN);
    20         style.setLeftBorderColor(HSSFColor.BLACK.index);
    21         style.setBorderRight(HSSFCellStyle.BORDER_THIN);
    22         style.setRightBorderColor(HSSFColor.BLACK.index);
    23         style.setBorderTop(HSSFCellStyle.BORDER_THIN);
    24         style.setTopBorderColor(HSSFColor.BLACK.index);
    25         style.setWrapText(true);//自动换行
    26         
    27         int columnNum = 0;   //列数
    28         int rowNum = 0;  //行数
    29         int sheetNum = 0; //工作簿数
    30     
    31         if(mapList == null || mapList.size() == 0)
    32         {
    33             sheets.add(createSheet(workbook,titles,style,"sheet" + sheetNum,enTitles));
    34             return ;
    35         }
    36         
    37         Iterator<Map<String, String>> iter = mapList.iterator();
    38         
    39         while(iter.hasNext())
    40         {
    41             Map<String, String> obj = iter.next();
    42             if(rowNum == 0)
    43             {
    44                 sheets.add(createSheet(workbook,titles,style,"sheet" + sheetNum,enTitles));
    45                 sheetNum++;
    46             }
    47             rowNum++;
    48             columnNum = 0;
    49             HSSFRow dataRow = sheets.get(sheetNum-1).createRow(rowNum);
    50 
    51             
    52             for(String title: enTitles){
    53                 HSSFCell cell = dataRow.createCell(columnNum);
    54                 String value = obj.get(title);
    55                 cell.setCellValue(value);
    56                 cell.setCellStyle(style);
    57                 columnNum++;
    58             }
    59             
    60             if(rowNum > 65534)
    61             {
    62                 rowNum = 0;
    63             }
    64         }
    65         
    66         workbook.write(fos);
    67         fos.close();
    68         
    69         
    70     }
    71     
    72 /**
    73    创建Excel工作簿
    74 */
    75     private  HSSFSheet createSheet(HSSFWorkbook workbook,Map<String, String> titles,HSSFCellStyle style,String sheetname, String[] enTitles)
    76     {
    77         HSSFSheet sheet = workbook.createSheet(sheetname);
    78         sheet.autoSizeColumn(1, true); //列自适应宽度
    79         int columnNum = 0;
    80         int rowNum = 0;
    81         HSSFRow titleRow = sheet.createRow(rowNum);
    82         
    83         for(String key: enTitles){
    84             HSSFCell cell = titleRow.createCell(columnNum);
    85             String title = titles.get(key);
    86             cell.setCellValue(title);
    87             cell.setCellStyle(style);
    88             columnNum++;
    89         }
    90         return sheet;
    91     }
  • 相关阅读:
    PyCharm黄色波浪线提示: Simplify chained comparison
    SQL Server 2017 新功能分享
    阿里云RDS for SQL Server使用的一些最佳实践
    Spark入门PPT分享
    亿级SQL Server运维的最佳实践PPT分享
    使用T-SQL找出执行时间过长的作业
    SQL Server中TOP子句可能导致的问题以及解决办法
    广州的小伙伴福利-由微软组织的在广州SQL Server线下活动
    在SQL Server中为什么不建议使用Not In子查询
    微软Ignite大会我的Session(SQL Server 2014 升级面面谈)PPT分享
  • 原文地址:https://www.cnblogs.com/bywallance/p/6197633.html
Copyright © 2011-2022 走看看