JAVAWeb使用POI做导出Excel
一.需要了解的API
①HSSFWorkBook //代表一个Excel文件
②HSSFSheet //代表一个表
③HSSFRow //代表一个表中的某一行
④HSSFCell //代表一个表中的某一行的某一个单元格
⑤HSSFCellStyle //单元格的样式
⑥HSSFFont //字体样式
二.导出过程代码思想
①首先创建一个载体(Excel),HSSFWorkBook wb = new HSSFWorkBook();
②在Excel创建一个sheet,HSSFSheet sheet = wb.createSheet("sheet name");
③在sheet中创建第一行,HSSFRow row = sheet.createRow(0); 注意下标从0开始
④在第一行中创建第一个单元格,HSSFCell cell = row.createCell(0); 注意下标是从0开始
⑤创建一个HSSFCellStyle style = wb.createStyle();
⑥创建一个HSSFFont font = wb.createFont();
⑦cell.setCellStyle(style); 单元格添加样式
⑧style.setFont(font); 样式中保存字体
三.代码具体实现
public static HSSFWorkbook generateItemExcel(List<PmItemMaintainMVO> ps){ // 创建一个Excel文件 HSSFWorkbook wb = new HSSFWorkbook(); // 根据Excel创建一个sheet HSSFSheet sheet = wb.createSheet("立项信息"); // 创建一行 HSSFRow row = sheet.createRow(0); row.setHeight((short) 800); // 创建字体样式 --头 HSSFFont font = wb.createFont(); font.setBoldweight(HSSFFont.BOLDWEIGHT_BOLD); font.setFontName("微软雅黑"); // 创建样式 --头 HSSFCellStyle styleTitle = wb.createCellStyle(); styleTitle.setAlignment(HSSFCellStyle.ALIGN_CENTER); styleTitle.setVerticalAlignment(HSSFCellStyle.VERTICAL_CENTER); styleTitle.setFont(font); styleTitle.setBorderTop(HSSFCellStyle.BORDER_THIN); styleTitle.setBorderBottom(HSSFCellStyle.BORDER_THIN); styleTitle.setBorderLeft(HSSFCellStyle.BORDER_THIN); styleTitle.setBorderRight(HSSFCellStyle.BORDER_THIN); //创建字体样式 --体 HSSFFont fontCell = wb.createFont(); font.setFontName("微软雅黑"); //创建样式 --体 HSSFCellStyle styleCell = wb.createCellStyle(); styleCell.setAlignment(HSSFCellStyle.ALIGN_CENTER); styleCell.setVerticalAlignment(HSSFCellStyle.VERTICAL_CENTER); styleCell.setFont(fontCell); styleCell.setBorderTop(HSSFCellStyle.BORDER_THIN); styleCell.setBorderBottom(HSSFCellStyle.BORDER_THIN); styleCell.setBorderLeft(HSSFCellStyle.BORDER_THIN); styleCell.setBorderRight(HSSFCellStyle.BORDER_THIN); // 设置头信息 HSSFCell cell_01 = row.createCell(0); cell_01.setCellStyle(styleTitle); cell_01.setCellValue("项目名称"); HSSFCell cell_02 = row.createCell(1); cell_02.setCellStyle(styleTitle); cell_02.setCellValue("项目编号 "); HSSFCell cell_03 = row.createCell(2); cell_03.setCellStyle(styleTitle); cell_03.setCellValue("ERP项目号 "); HSSFCell cell_04 = row.createCell(3); cell_04.setCellStyle(styleTitle); cell_04.setCellValue("项目经理 "); HSSFCell cell_05 = row.createCell(4); cell_05.setCellStyle(styleTitle); cell_05.setCellValue("销售经理"); HSSFCell cell_06 = row.createCell(5); cell_06.setCellStyle(styleTitle); cell_06.setCellValue("创建时间"); HSSFCell cell_07 = row.createCell(6); cell_07.setCellStyle(styleTitle); cell_07.setCellValue("审核状态"); HSSFCell cell_08 = row.createCell(7); cell_08.setCellStyle(styleTitle); cell_08.setCellValue("项目生命周期状态"); SimpleDateFormat sb = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); for (int i = 0; i < ps.size(); i++) { PmItemMaintainMVO p = ps.get(i); HSSFRow r = sheet.createRow(i+1); r.setHeight((short) 400); HSSFCell cell_1 = r.createCell(0); cell_1.setCellStyle(styleCell); cell_1.setCellValue(p.getName()); HSSFCell cell_2 = r.createCell(1); cell_2.setCellStyle(styleCell); cell_2.setCellValue(p.getItemCode()); HSSFCell cell_3 = r.createCell(2); cell_3.setCellStyle(styleCell); cell_3.setCellValue(p.getErpCode()); HSSFCell cell_4 = r.createCell(3); cell_4.setCellStyle(styleCell); cell_4.setCellValue(p.getProjectManagerName()); HSSFCell cell_5 = r.createCell(4); cell_5.setCellStyle(styleCell); cell_5.setCellValue(p.getSalesManagerName()); HSSFCell cell_6 = r.createCell(5); cell_6.setCellStyle(styleCell); cell_6.setCellValue(sb.format(p.getCreated())); HSSFCell cell_7 = r.createCell(6); cell_7.setCellStyle(styleCell); cell_7.setCellValue(p.getStatusName()); HSSFCell cell_8 = r.createCell(7); cell_8.setCellStyle(styleCell); cell_8.setCellValue(p.getProjectStatusName()); } sheet.autoSizeColumn(0); sheet.autoSizeColumn(1); sheet.autoSizeColumn(2); sheet.autoSizeColumn(3); sheet.autoSizeColumn(4); sheet.autoSizeColumn(5); sheet.autoSizeColumn(6); sheet.autoSizeColumn(7); return wb; }
sheet.autoSizeColumn(7); 单元格自动适应大小,注意,这里的自适应有问题。
如果有使用请标明来源:http://www.cnblogs.com/duwenlei/