apache poi 生成excel
2016-03-17 20:46
507 查看
ExcelBuilder.Java
packagecom.coracle.yk.xmanager.util.poi; importcom.coracle.yk.xframework.util.BlankUtil; importorg.apache.poi.hssf.usermodel.HSSFSheet; importorg.apache.poi.hssf.usermodel.HSSFWorkbook; importorg.apache.poi.ss.usermodel.Cell; importorg.apache.poi.ss.usermodel.Row; importjava.util.List; importjava.util.Map; /** *Excel工具类 *创建Sheet,填充数据 *author:huangbaidong *created:2016/3/18. */ publicclassExcelBuilder{ /** *创建只包含标题列的sheet表 *@paramwb *@paramsheetName *@paramtitleNames *@return */ publicstaticHSSFSheetcreateExcelSheetWithTitle(HSSFWorkbookwb,StringsheetName,List<String>titleNames){ if(BlankUtil.isNotEmpty(titleNames)){ returncreateExcelSheetWithTitle(wb,sheetName,titleNames.toArray(newString[titleNames.size()])); } returncreateExcelSheetWithTitle(wb,sheetName,newString[]{}); } /** *创建只包含标题列的sheet表 *@paramwb *@paramsheetName *@paramtitleNames *@return */ publicstaticHSSFSheetcreateExcelSheetWithTitle(HSSFWorkbookwb,StringsheetName,String[]titleNames){ if(BlankUtil.isEmpty(sheetName)){//如果没传sheetName,给定默认值 sheetName="Sheet"; } HSSFSheetsheet=wb.createSheet(sheetName); sheet.setDefaultColumnWidth(20);//设置默认列宽 sheet.setDefaultRowHeight((short)300);//设置默认行高 if(BlankUtil.isNotEmpty(titleNames)){//设置Sheet首行列标题 Rowrow=sheet.createRow(0); Cellcell=null; for(inti=0;i<titleNames.length;i++){ cell=row.createCell(i); cell.setCellValue(titleNames[i]); } } returnsheet; } /** *创建包含标题列的sheet,并填充数据 *@paramwb *@paramsheetName *@paramtitleNames *@paramdatas *@return */ publicstaticHSSFSheetcreateExcelSheetWithTitleAndData( HSSFWorkbookwb,StringsheetName,List<String>titleNames,List<Map<String,Object>>datas){ if(BlankUtil.isNotEmpty(titleNames)&&BlankUtil.isNotEmpty(datas)){ returncreateExcelSheetWithTitleAndData(wb,sheetName,titleNames.toArray(newString[titleNames.size()]),datas); } returncreateExcelSheetWithTitle(wb,sheetName,newString[]{}); } /** *创建包含标题列的sheet,并填充数据 *@paramwb *@paramsheetName *@paramtitleNames *@paramdatas *@return */ publicstaticHSSFSheetcreateExcelSheetWithTitleAndData( HSSFWorkbookwb,StringsheetName,String[]titleNames,List<Map<String,Object>>datas){ HSSFSheetsheet=createExcelSheetWithTitle(wb,sheetName,titleNames);//创建包含标题列的空sheet fillDataToSheet(sheet,datas);//给sheet填充数据 returnsheet; } /** *向sheet中填充数据行 *@paramsheet *@paramdatas */ publicstaticHSSFSheetfillDataToSheet(HSSFSheetsheet,List<Map<String,Object>>datas){ if(sheet!=null&&BlankUtil.isNotEmpty(datas)){ Rowrow=null; Cellcell=null; Map<String,Object>rowDataMap=null; ObjectcolumnValue=null; //第一行是标题行,所以从第二行开始插入数据 for(introwIndex=0;rowIndex<datas.size();rowIndex++){ row=sheet.createRow(rowIndex+1);//从第二行开始 rowDataMap=datas.get(rowIndex); intcolumnIndex=0; for(Stringkey:rowDataMap.keySet()){ cell=row.createCell(columnIndex); columnValue=rowDataMap.get(key); if(columnValueinstanceofInteger){ cell.setCellValue((Integer)columnValue); }elseif(columnValueinstanceofLong){ cell.setCellValue((Long)columnValue); }else{ cell.setCellValue(String.valueOf(columnValue)); } columnIndex++; } } } returnsheet; } }
ExcelTest.java
publicstaticvoidmain(Stringargs[])throwsIOException{ Stringpath="d:\\statistic.xls"; //POIFSFileSystemfs=newPOIFSFileSystem(newFileInputStream("d:/test.xls")); HSSFWorkbookwb=newHSSFWorkbook(); List<Map<String,Object>>datas=newArrayList<Map<String,Object>>(); Map<String,Object>map1=newLinkedHashMap<String,Object>(); map1.put("name","zhangsan"); map1.put("age",10); map1.put("sex","男"); map1.put("birthday",Xiruo.stringToDate("2015-3-512:22:33")); Map<String,Object>map2=newLinkedHashMap<String,Object>(); map2.put("name","lisi"); map2.put("age",13); map2.put("sex","女"); map2.put("birthday",Xiruo.stringToDate("2015-3-612:22:33")); datas.add(map1); datas.add(map2); HSSFSheetsheet1=ExcelBuilder.createExcelSheetWithTitle(wb,null,newString[]{"姓名","年龄","性别","生日"}); ExcelBuilder.fillDataToSheet(sheet1,datas); //false表示不追加,每次都重写 FileOutputStreamfileOut=newFileOutputStream(path,false); wb.write(fileOut); }
packagecom.coracle.yk.xmanager.util.poi; importcom.coracle.yk.xframework.util.BlankUtil; importorg.apache.poi.hssf.usermodel.HSSFSheet; importorg.apache.poi.hssf.usermodel.HSSFWorkbook; importorg.apache.poi.ss.usermodel.Cell; importorg.apache.poi.ss.usermodel.Row; importjava.util.List; importjava.util.Map; /** *Excel工具类 *创建Sheet,填充数据 *author:huangbaidong *created:2016/3/18. */ publicclassExcelBuilder{ /** *创建只包含标题列的sheet表 *@paramwb *@paramsheetName *@paramtitleNames *@return */ publicstaticHSSFSheetcreateExcelSheetWithTitle(HSSFWorkbookwb,StringsheetName,List<String>titleNames){ if(BlankUtil.isNotEmpty(titleNames)){ returncreateExcelSheetWithTitle(wb,sheetName,titleNames.toArray(newString[titleNames.size()])); } returncreateExcelSheetWithTitle(wb,sheetName,newString[]{}); } /** *创建只包含标题列的sheet表 *@paramwb *@paramsheetName *@paramtitleNames *@return */ publicstaticHSSFSheetcreateExcelSheetWithTitle(HSSFWorkbookwb,StringsheetName,String[]titleNames){ if(BlankUtil.isEmpty(sheetName)){//如果没传sheetName,给定默认值 sheetName="Sheet"; } HSSFSheetsheet=wb.createSheet(sheetName); sheet.setDefaultColumnWidth(20);//设置默认列宽 sheet.setDefaultRowHeight((short)300);//设置默认行高 if(BlankUtil.isNotEmpty(titleNames)){//设置Sheet首行列标题 Rowrow=sheet.createRow(0); Cellcell=null; for(inti=0;i<titleNames.length;i++){ cell=row.createCell(i); cell.setCellValue(titleNames[i]); } } returnsheet; } /** *创建包含标题列的sheet,并填充数据 *@paramwb *@paramsheetName *@paramtitleNames *@paramdatas *@return */ publicstaticHSSFSheetcreateExcelSheetWithTitleAndData( HSSFWorkbookwb,StringsheetName,List<String>titleNames,List<Map<String,Object>>datas){ if(BlankUtil.isNotEmpty(titleNames)&&BlankUtil.isNotEmpty(datas)){ returncreateExcelSheetWithTitleAndData(wb,sheetName,titleNames.toArray(newString[titleNames.size()]),datas); } returncreateExcelSheetWithTitle(wb,sheetName,newString[]{}); } /** *创建包含标题列的sheet,并填充数据 *@paramwb *@paramsheetName *@paramtitleNames *@paramdatas *@return */ publicstaticHSSFSheetcreateExcelSheetWithTitleAndData( HSSFWorkbookwb,StringsheetName,String[]titleNames,List<Map<String,Object>>datas){ HSSFSheetsheet=createExcelSheetWithTitle(wb,sheetName,titleNames);//创建包含标题列的空sheet fillDataToSheet(sheet,datas);//给sheet填充数据 returnsheet; } /** *向sheet中填充数据行 *@paramsheet *@paramdatas */ publicstaticHSSFSheetfillDataToSheet(HSSFSheetsheet,List<Map<String,Object>>datas){ if(sheet!=null&&BlankUtil.isNotEmpty(datas)){ Rowrow=null; Cellcell=null; Map<String,Object>rowDataMap=null; ObjectcolumnValue=null; //第一行是标题行,所以从第二行开始插入数据 for(introwIndex=0;rowIndex<datas.size();rowIndex++){ row=sheet.createRow(rowIndex+1);//从第二行开始 rowDataMap=datas.get(rowIndex); intcolumnIndex=0; for(Stringkey:rowDataMap.keySet()){ cell=row.createCell(columnIndex); columnValue=rowDataMap.get(key); if(columnValueinstanceofInteger){ cell.setCellValue((Integer)columnValue); }elseif(columnValueinstanceofLong){ cell.setCellValue((Long)columnValue); }else{ cell.setCellValue(String.valueOf(columnValue)); } columnIndex++; } } } returnsheet; } }
相关文章推荐
- Apache优化:修改最大并发连接数
- Apache优化:修改最大并发连接数
- 初识apache commons-pool 2.x
- apache shiro集群实现(二)— cache共享
- apache shiro集群实现(一) session共享
- Apache Commons 常用工具类整理
- Apache benchmark
- Apache的prefork模式和worker模式
- apache下载安装配置
- Apache Spark Jobs 性能调优(一)
- Base64 Java org.apache.commons.codec.binary.Base64
- linux下装php5+mysql5+apache
- apache spark 结合 elasticsearch
- Kafka Manager - 一个管理 Apache Kafka 的工具
- ERROR org.apache.hadoop.yarn.server.resourcemanager.ResourceManager: RECEIVED SIGNAL 15: SIGTERM
- apache kafka监控系列-KafkaOffsetMonitor
- Apache服务器配置项和虚拟机配置
- Apache Lucene 5.x 集成中文分词库 IKAnalyzer
- 在本机部署Apache服务器
- 修改服务器Apache-Coyote/1.1标识为自定义内容