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

     /**
* 将MapList转化为Excel文件
* @param excelFile--excel文件的路径
* @param mapList---要存储的mapList
* @param titles----对应的列名称
* @param enTitles---列名称map的keys数组
* @throws Exception
*/
public void mapListToExcel(String excelFile,List<Map<String, String>> mapList, Map<String, String> titles, String[] enTitles) throws Exception{
FileOutputStream fos=new FileOutputStream(excelFile);
HSSFWorkbook workbook = new HSSFWorkbook();
HSSFCellStyle style = workbook.createCellStyle();
List<HSSFSheet> sheets = new ArrayList<HSSFSheet>();
/**
* 设置其它数据风格
*/
style.setBorderBottom(HSSFCellStyle.BORDER_THIN); // 设置单无格的边框为粗体
style.setBottomBorderColor(HSSFColor.BLACK.index); // 设置单元格的边框颜色.
style.setBorderLeft(HSSFCellStyle.BORDER_THIN);
style.setLeftBorderColor(HSSFColor.BLACK.index);
style.setBorderRight(HSSFCellStyle.BORDER_THIN);
style.setRightBorderColor(HSSFColor.BLACK.index);
style.setBorderTop(HSSFCellStyle.BORDER_THIN);
style.setTopBorderColor(HSSFColor.BLACK.index);
style.setWrapText(true);//自动换行 int columnNum = 0; //列数
int rowNum = 0; //行数
int sheetNum = 0; //工作簿数 if(mapList == null || mapList.size() == 0)
{
sheets.add(createSheet(workbook,titles,style,"sheet" + sheetNum,enTitles));
return ;
} Iterator<Map<String, String>> iter = mapList.iterator(); while(iter.hasNext())
{
Map<String, String> obj = iter.next();
if(rowNum == 0)
{
sheets.add(createSheet(workbook,titles,style,"sheet" + sheetNum,enTitles));
sheetNum++;
}
rowNum++;
columnNum = 0;
HSSFRow dataRow = sheets.get(sheetNum-1).createRow(rowNum); for(String title: enTitles){
HSSFCell cell = dataRow.createCell(columnNum);
String value = obj.get(title);
cell.setCellValue(value);
cell.setCellStyle(style);
columnNum++;
} if(rowNum > 65534)
{
rowNum = 0;
}
} workbook.write(fos);
fos.close(); } /**
创建Excel工作簿
*/
private HSSFSheet createSheet(HSSFWorkbook workbook,Map<String, String> titles,HSSFCellStyle style,String sheetname, String[] enTitles)
{
HSSFSheet sheet = workbook.createSheet(sheetname);
sheet.autoSizeColumn(1, true); //列自适应宽度
int columnNum = 0;
int rowNum = 0;
HSSFRow titleRow = sheet.createRow(rowNum); for(String key: enTitles){
HSSFCell cell = titleRow.createCell(columnNum);
String title = titles.get(key);
cell.setCellValue(title);
cell.setCellStyle(style);
columnNum++;
}
return sheet;
}

l创建Excel文件的更多相关文章

  1. NPOI 2.0 创建Excel文件

    如果只是简单的处理的话,只需要引用下载压缩包里的 NPOI.dll (office 2003)或 NPOI.OOXML.dll (office 2007) 文件而已. using System; us ...

  2. Java Struts2 POI创建Excel文件并实现文件下载

    Java Struts2 POI创建Excel文件并实现文件下载2013-09-04 18:53 6059人阅读 评论(1) 收藏 举报 分类: Java EE(49) Struts(6) 版权声明: ...

  3. C#创建Excel文件并将数据导出到Excel文件

    工具原料: Windows 7,Visual Studio 2010, Microsoft Office 2007 创建解决方案 菜单>新建>项目>Windows窗体应用程序: 添加 ...

  4. Jxl创建Excel文件和解析Excel文件

    import java.io.File; import jxl.Workbook; import jxl.write.Label; import jxl.write.WritableSheet; im ...

  5. 读取并创建excel文件(.xls)

    第三方库,附件 缺点:该库只支持.xls文件的操作 1.读取excel文件 例子: try { /** * 后续考虑问题,比如Excel里面的图片以及其他数据类型的读取 **/ InputStream ...

  6. java使用poi创建excel文件

    import org.apache.poi.hssf.usermodel.HSSFCell;import org.apache.poi.hssf.usermodel.HSSFRow;import or ...

  7. 在自定义目录下,按日期创建excel文件

    在指定文件目录下,新建以当前日期命名的excel 文件,如果文件已经存在,在文件中新建一个sheet页来存放数据 import datetime import xlrd, xlwt import re ...

  8. Creating Excel files with Python and XlsxWriter(通过 Python和XlsxWriter来创建Excel文件(xlsx格式))

    以下所有内容翻译至: https://xlsxwriter.readthedocs.io/ #----------------------------------------------------- ...

  9. HSSFWorkbook 创建Excel文件

    1.项目代码实例 @Override public OutputStream exportAucLotData(String id, String password, OutputStream out ...

随机推荐

  1. jmeter仅一次控制器

    仅针对 1个线程的 多线程的那个不生效  想实现多次执行某个请求只执行一次 需要设置为单线程 循环次数设置为多次就可以了 

  2. IIS运行.NET4.0配置

    IIS运行.NET4.0配置 “/CRM”应用程序中的服务器错误.配置错误说明: 在处理向该请求提供服务所需的配置文件时出错.请检查下面的特定错误详细信息并适当地修改配置文件. 分析器错误消息: 无法 ...

  3. 从网易与淘宝的font-size思考前端设计稿与工作流

    本文结合自己对网易与淘宝移动端首页html元素上的font-size这个属性的思考与学习,讨论html5设计稿尺寸以及前端与设计之间协作流程的问题,内容较多,但对你的技术和工作一定有价值,欢迎阅读和点 ...

  4. Python2 下 Unicode 的一个小bug

    关于Python的编码问题已经是老生常谈了,此处主要是介绍一个罕见的问题,也算是Python2的一个bug了(Python3不会有此问题). 在有时候我们去爬取网页或者调用一些第三方库获取文本的时候, ...

  5. 【Raspberry Pi】新入手的Raspberry Pi3拼装日志

    一.概述 2016年暑假某宝入手Raspberry Pi 3,装机清单: 树莓派主板 亚克力外壳 小风扇 散热片 30G SD card 螺丝若干颗 因机型问题,可能与你的机器有微小差异 二.装机过程 ...

  6. C# TransactionScope 使用

    注意: Windows 服务中,开启Distributed Transaction Coordinator 服务. using (var scope = new TransactionScope()) ...

  7. split函数的实现

    split作为字符串分割函数非常有用,但在C++里面没有这个函数.自己实现一个分割函数: 1.遇到多个分隔符连在一起,则不做分割 2.()内的分隔符不起作用 3.如果只有(,没有)不影响分隔符 #in ...

  8. Hibernate主键生成策略(转)

    1.自动增长identity 适用于MySQL.DB2.MS SQL  Server,采用数据库生成的主键,用于为long.short.int类型生成唯一标识 使用SQL Server 和 MySQL ...

  9. eclipse java项目中明明引入了jar包 为什么项目启动的时候不能找到jar包 项目中已经 引入了 com.branchitech.app 包 ,但时tomcat启动的时候还是报错? java.lang.ClassNotFoundException: com.branchitech.app.startup.AppStartupContextListener java.lang.ClassN

    eclipse java项目中明明引入了jar包 为什么项目启动的时候不能找到jar包 项目中已经 引入了 com.branchitech.app 包 ,但时tomcat启动的时候还是报错?java. ...

  10. Sublime Text 使用笔记

    常用快捷键 command+shift+d   # 复制当前行到下一行 .