POI 导出Excel 实例记录
作者:互联网
public static XSSFWorkbook createUserListExcel(List<Map<String,Object>> listresult){ // 1.创建HSSFWorkbook,一个HSSFWorkbook对应一个Excel文件 XSSFWorkbook wb = new XSSFWorkbook(); // 2.在workbook中添加一个sheet,对应Excel文件中的sheet XSSFSheet sheet = wb.createSheet("sheet1"); // 3.设置表头,即每个列的列名 String[] titel = {"rowName1","rowName2","rowName3","rowName4"}; // 3.1创建第一行 XSSFRow row = sheet.createRow(0); // 此处创建一个序号列 row.createCell(0).setCellValue("序号"); // 将列名写入 Object style = getDefaultHeaderCellStyle(wb); List<ExcelColumn> excelColumns = ImportExportExcelUtil.xmlToBean(path);; Font redFont = wb.createFont(); redFont.setColor(Font.COLOR_RED);// 红色 int j=0; for (ExcelColumn e:excelColumns){ Cell cell = row.createCell(j + 1); if(e.getText().contains("*")){ XSSFRichTextString richString = new XSSFRichTextString(e.getText()); // richString.applyFont( 0, 6, blueFont ); richString.applyFont( e.getText().length()-2, e.getText().length(), redFont ); cell.setCellValue(richString); }else { cell.setCellValue(e.getText()); } // row.createCell(j+1).setCellValue(e.getText()); j++; } // // for (int i = 0; i < titel.length; i++) { // // 给列写入数据,创建单元格,写入数据 // row.createCell(i+1).setCellValue(titel[i]); // } // 写入正式数据 for (int i = 0; i < listresult.size(); i++) { // 创建行 row = sheet.createRow(i+1); // 序号 row.createCell(0).setCellValue(i+1); // 医院名称 row.createCell(1).setCellValue(listresult.get(i).get("rowKey1").toString()); sheet.autoSizeColumn(1, true); // 业务类型 row.createCell(2).setCellValue(listresult.get(i).get("rowKey2").toString()); // 异常信息 row.createCell(3).setCellValue(listresult.get(i).get("rowKey3").toString()); // 数量 XSSFCell cell = row.createCell(4); XSSFRichTextString richString = new XSSFRichTextString( "Hello*" ); // richString.applyFont( 0, 6, blueFont ); richString.applyFont( 4, 6, redFont ); cell.setCellValue(richString); // cell.setCellValue(listresult.get(i).get("rowKey4").toString()); // cell.setCellStyle((CellStyle)style); } /** * 上面的操作已经是生成一个完整的文件了,只需要将生成的流转换成文件即可; * 下面的设置宽度可有可无,对整体影响不大 */ // 设置单元格宽度 int curColWidth = 0; for (int i = 0; i <= titel.length; i++) { // 列自适应宽度,对于中文半角不友好,如果列内包含中文需要对包含中文的重新设置。 sheet.autoSizeColumn(i, true); // 为每一列设置一个最小值,方便中文显示 curColWidth = sheet.getColumnWidth(i); if(curColWidth<2500){ sheet.setColumnWidth(i, 2500); } // 第3列文字较多,设置较大点。 sheet.setColumnWidth(3, 8000); } return wb; }
对象输出
private static String downUserList(List<Map<String,Object>> listresult){ // getTime()是一个返回当前时间的字符串,用于做文件名称 String name ="ExcelTest"; // csvFile是我的一个路径,自行设置就行 // String ys = csvFile + "//" + name + ".xlsx"; // 1.生成Excel XSSFWorkbook userListExcel = createUserListExcel(listresult); try{ // 输出成文件 // File file = new File(csvFile); // if(file.exists() || !file.isDirectory()) { // file.mkdirs(); // } // TODO 生成的wb对象传输 FileOutputStream outputStream = new FileOutputStream(new File(path2)); userListExcel.write(outputStream); outputStream.close(); }catch(Exception e){ e.printStackTrace(); } return name; }
调用
public static void main(String[] asge){ List<Map<String,Object>> list = new ArrayList<>(); Map<String,Object> map = new HashMap<>(); map.put("rowKey1","rowKey1"); map.put("rowKey2","rowKey2"); map.put("rowKey3","rowKey3"); map.put("rowKey4","rowKey4"); list.add(map); downUserList(list); List<ExcelColumn> excelColumns = getExcelColumns(); }
标签:listresult,get,Excel,createCell,实例,POI,new,setCellValue,row 来源: https://www.cnblogs.com/wangfl/p/10953941.html