前几天客户提出来一个需求,要求我们把某些人员信息导出excel给他们,方便他们对人员进行核实(其实我觉的很傻的需求,通过系统核实不是更方便吗)。
废话不多说,直接上代码。
/**
* 生成工作网格员excel
* @throws IOException
*/
public static void createExcel(List<Map<String, Object>> list,HttpServletResponse response) throws Exception{
//定义表头
String[] title={"名称","类型","街道""};
//创建HSSFWorkbook对象(excel的文档对象)
HSSFWorkbook wb = new HSSFWorkbook();
// 建立新的sheet对象(excel的表单)
HSSFSheet sheet = wb.createSheet("sheet1");
//创建第一行
HSSFRow row=sheet.createRow(0);
HSSFCell cell=null;
//插入第一行数据的表头
for(int i=0;i<title.length;i++){
cell=row.createCell(i);
cell.setCellValue(title[i]);
}
//写入数据
for (int i=1;i<=10;i++){
HSSFRow nrow=sheet.createRow(i);
HSSFCell ncell=nrow.createCell(0);
ncell.setCellValue(""+i);
ncell=nrow.createCell(1);
ncell.setCellValue("user"+i);
ncell=nrow.createCell(2);
ncell.setCellValue("24");
}
//当前用户桌面
// File desktopDir = FileSystemView.getFileSystemView().getHomeDirectory();
// String desktopPath = desktopDir.getAbsolutePath();
//创建excel文件
// File file=new File("d://poi.xlsx");
// File file=new File(desktopPath+"/工作网格员.xls");
// try {
// file.createNewFile();
// //将excel写入
// FileOutputStream stream= FileUtils.openOutputStream(file);
// wb.write(stream);
// stream.close();
// } catch (IOException e) {
// e.printStackTrace();
// }OutputStream output;
output = response.getOutputStream();
//清空缓存
response.reset();
//定义浏览器响应表头,顺带定义下载名,比如students(中文名需要转义)
response.setHeader("Content-disposition", "attachment;filename="+new String("工作网格员".getBytes(),"iso-8859-1")+".xls");
//定义下载的类型,标明是excel文件
response.setContentType("application/vnd.ms-excel");
//这时候把创建好的excel写入到输出流
wb.write(output);
//养成好习惯,出门记得随手关门
output.close();
}
友情提示:
通过浏览器下载 前端请求方式要为
window.location.href=xxx/method
不可习惯性为Ajax请求。