您的位置:首页 > 编程语言 > Java开发

JAVAWeb使用POI做导出Excel

2016-01-04 17:12 417 查看
一.需要了解的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); 单元格自动适应大小,注意,这里的自适应有问题。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: