关于JAVA 用POI 通过EXCEL模板 导出Excel

之前写过通过 《关于JAVA 用POI 导出Excel 》,下面写关于通过excel模板导出excel的方法。至于准备工作这里面就很简单,JAR包和上面的一样。文件代码也很少,本人觉得这个事非常简单的导出EXCEL,通过excel模板导出的样式可以和要求的模板样式基本上一直。需要改进的地方,可以自己设置一下excel样式。
代码如下:
try
{
File fi = new File(request.getSession().getServletContext().getRealPath("/") + "WEB-INF/excel/excel.xls");
POIFSFileSystem fs = new POIFSFileSystem(new FileInputStream(fi));
String excelName = fi.getName();
HSSFWorkbook wb = new HSSFWorkbook(fs);
HSSFSheet sheet = wb.getSheetAt(0);
HSSFCell cell4Row2Col = null;
HSSFCell cell4Row3Col = null;
HSSFCellStyle cellStyle =  this.getBodyStyle(wb);
List > listData = new ArrayList >();
listData = excelService.queryExcelDate();
for (int i = 0; i < listData.size(); i++)
{
Map map = (Map) listData.get(i);
HSSFRow bodyRow = sheet.createRow(4 + i);
cell4Row2Col = bodyRow.createCell(2);
cell4Row2Col = sheet.getRow(4 + i).getCell(2);
cell4Row2Col.setCellStyle(cellStyle);
cell4Row2Col.setCellValue(map.get("ID").toString());
cell4Row2Col = bodyRow.createCell(3);
cell4Row3Col = sheet.getRow(4 + i).getCell(3);
cell4Row3Col.setCellStyle(cellStyle);
cell4Row3Col.setCellValue(map.get("MONEY").toString());

}

response.setContentType("application/binary;charset=ISO8859_1");
//        String fileName = new String(("最外层EXCEL文件名").getBytes(), "ISO8859_1");
//        response.setHeader("Content-disposition", "attachment; filename=" + fileName + ".xls"); 
response.setHeader("Content-disposition", "attachment; filename=" + excelName);
ServletOutputStream outputStream = response.getOutputStream();
//        FileOutputStream out = new FileOutputStream("D:/"+excelName);  
wb.write(outputStream);
outputStream.close();
}
catch (IOException e)
{
e.printStackTrace();
}
 
public HSSFCellStyle getBodyStyle(HSSFWorkbook wb) { 
  // 创建单元格样式 
  HSSFCellStyle cellStyle = wb.createCellStyle(); 
  // 设置单元格的背景颜色为淡蓝色 
  // cellStyle.setFillForegroundColor(HSSFColor.PALE_BLUE.index); 
  // cellStyle.setFillPattern(XSSFCellStyle.SOLID_FOREGROUND);
  // 设置单元格居中对齐 
  // 设置单元格内容水平对其方式 
  // XSSFCellStyle.ALIGN_CENTER 居中对齐 
 // XSSFCellStyle.ALIGN_LEFT 左对齐 
 // XSSFCellStyle.ALIGN_RIGHT 右对齐 cellStyle.setAlignment(XSSFCellStyle.ALIGN_CENTER);
 // 设置单元格垂直居中对齐
  // 设置单元格内容垂直对其方式 
  // XSSFCellStyle.VERTICAL_TOP 上对齐 
  // XSSFCellStyle.VERTICAL_CENTER 中对齐 
 // XSSFCellStyle.VERTICAL_BOTTOM 下对齐 cellStyle.setVerticalAlignment(XSSFCellStyle.VERTICAL_CENTER); 
  // 创建单元格内容显示不下时自动换行
  cellStyle.setWrapText(true); 
  // 设置单元格字体样式 
  HSSFFont font = wb.createFont(); 
  // 设置字体加粗 
  font.setBoldweight(XSSFFont.BOLDWEIGHT_NORMAL);
 font.setFontName("宋体"); 
  font.setFontHeight((short) 200);
  cellStyle.setFont(font); 
  // 设置单元格边框为细线条 
  // 设置单元格边框样式 
  // CellStyle.BORDER_DOUBLE 双边线 
  // CellStyle.BORDER_THIN 细边线 
 // CellStyle.BORDER_MEDIUM 中等边线 
 // CellStyle.BORDER_DASHED 虚线边线 
  // CellStyle.BORDER_HAIR 小圆点虚线边线 
  // CellStyle.BORDER_THICK 粗边线 
  cellStyle.setBorderLeft(XSSFCellStyle.BORDER_THIN); cellStyle.setBorderBottom(XSSFCellStyle.BORDER_THIN); cellStyle.setBorderRight(XSSFCellStyle.BORDER_THIN); cellStyle.setBorderTop(XSSFCellStyle.BORDER_THIN); 
  return cellStyle; 
 }
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值