poi excel 导出注意事项

poi excel 导出注意事项
1、excel来源不同导出结果会不同
1.1、excel 由POI生成,文件完全由程序创建,可直接通过普通方式导出文件

try{  
	OutputStream os = response.getOutputStream();
	wb.write(os);
	response.setContentType("application/msexcel;charset=UTF-8");
	response.setHeader("Content-Disposition", "attachment;filename=eport.xls");
	os.flush();
	os.close();
}catch (Exception e){  
	e.printStackTrace();  
}

1.2、excel 文件为服务器文件,只通过POI读取修改后返回客户端完成下载需要通过以下方式进行操作,
否则文件流将被转成XML格式并返回客户端,客户端实际得到的将是文本

try{
	OutputStream os = response.getOutputStream();
	response.setContentType("application/octet-stream");
	response.setHeader("Content-Disposition", "attachment;filename=export.xls");
	response.flushBuffer();//注意此处操作,response先将设置的头部写出,通知客户端下面传输的是文件
	wb.write(response.getOutputStream());//写出数据
	os.flush();
	os.close();
}catch (Exception e){
	e.printStackTrace();
}

2、poi处理excel时,处理合并单元格等复杂操作需要先写入文本,然后合并单元格,避免生成的excel产生错误
如需要对第1行1~3单元个进行合并,并写入文本“合并单元格”需要按如下步骤操作

//写入文本,文本必须写入到指定要合并的一组单元格中第一个单元内,否则数据将丢失
HSSFRow row = sheet.createRow(1);
HSSFCell cell = row.createCell(0);
cell.setCellValue("合并单元格");
//合并指定单元格
CellRangeAddress cra=new CellRangeAddress(1, 1, 0, 2);
sheet.addMergedRegion(cra);

猜你喜欢

转载自aftertoday.iteye.com/blog/2252402