导出为xls表格
- 分区数据导出方法(将分区数据写入到Excel文件提供客户端下载)
在SubareaAction中提供文件导出方法
* @throws IOException
*/
@Action(value = "subareaAction_exportXls")
public String exportXls() throws IOException {
List<SubArea> list = service.findAll();
//通过POI将数据写到Excel文件中
//在内存中创建一个表格对象
HSSFWorkbook excel = new HSSFWorkbook();
//在表格中创建一个Sheet标签页对象
Sheet sheet = excel.createSheet("分区数据统计");
//在标签页中创建行
Row title = sheet.createRow(0);
//在行中创建单元格
title.createCell(0).setCellValue("分区编号");
title.createCell(1).setCellValue("分区关键字");
title.createCell(2).setCellValue("分区辅助关键字");
//数据行
for (SubArea subArea : list) {
Row data = sheet.createRow(sheet.getLastRowNum() + 1);
data.createCell(0).setCellValue(subArea.getId());
data.createCell(1).setCellValue(subArea.getKeyWords());
data.createCell(2).setCellValue(subArea.getAssistKeyWords());
}
// 给导出的文件命名
String filename = "分区数据.xls";
//获取到用户使用的浏览器
String agent = ServletActionContext.getRequest().getHeader("User-Agent");
//为下载的文件设置编码,避免乱码
filename = FileUtils.encodeDownloadFilename(filename, agent);
//一个流(输出流)、两个头
//输出流
ServletOutputStream out = ServletActionContext.getResponse().getOutputStream();
//获得文件的类型
String contentType = ServletActionContext.getServletContext().getMimeType(filename);
// 设置文件类型
ServletActionContext.getResponse().setContentType(contentType);
ServletActionContext.getResponse().setHeader("content-disposition", "attchment;filename=" + filename);
//输出
excel.write(out);
return NONE;
}