十分钟学会Excel导出

Excel导出在内网系统一般用的很多,一般分为POI和JXL两种,前者支持excel2003(xls)和Excel2007(xlsx),而后者只支持Excel2003(xls),所以我们这里使用POI来做Excel 的导出;我们以导出员工信息的数据为例子:

第一步:

导入POI的jar包

第二步,在前台写一个ecxel导出的按钮,请注意,这个地方不能使用Ajax请求,因为我们接受的是一个OutputStream,我们接收到的数据是直接保存或者打开,所以这个地方不能使用ajax的data来接受返回的数据,我们使用window.open()的方式:

第三步:后台接受请求并做处理

@RequestMapping(“exportData”)
@ResponseBody
public void exportData(HttpServletResponse response) throws IOException {
//查询所有员工数据
List list = service.list();
//设置下载的head信息
String fileName = new String(“员工数据.xls”.getBytes(“utf-8”), “iso8859-1”);
response.setHeader(“Content-Disposition”, “attachment;filename=” + fileName);
//创建一个excel
Workbook wb = new HSSFWorkbook();
//创建一个工作表
Sheet sheet = wb.createSheet(“员工数据”);
//创建一行
Row row = sheet.createRow(0);
//创建这一行的单元格并设置内容
row.createCell(0).setCellValue(“编号”);
row.createCell(1).setCellValue(“姓名”);
row.createCell(2).setCellValue(“邮箱”);
row.createCell(3).setCellValue(“年龄”);
//创建第二行,并使用循环把每一行的数据设置进去
Row employeeRow = null;
for (int i = 0; i < list.size(); i++) {
Employee employee = list.get(i);
employeeRow = sheet.createRow(i + 1);
employeeRow.createCell(0).setCellValue(employee.getId());
employeeRow.createCell(1).setCellValue(employee.getName());
employeeRow.createCell(2).setCellValue(employee.getEmail());
employeeRow.createCell(3).setCellValue(employee.getAge());
}
//输出
wb.write(response.getOutputStream());
response.getOutputStream().close();
}


转载请注明来源,欢迎对文章中的引用来源进行考证,欢迎指出任何有错误或不够清晰的表达。可以在下面评论区评论,也可以邮件至 591235401@qq.com

文章标题:十分钟学会Excel导出

本文作者:阿杜同学

发布时间:2019-01-03, 13:47:21

最后更新:2019-01-03, 13:47:21

原始链接:http://yoursite.com/2019/01/03/%E5%8D%81%E5%88%86%E9%92%9F%E5%AD%A6%E4%BC%9AExcel%E5%AF%BC%E5%87%BA/

版权声明: "署名-非商用-相同方式共享 4.0" 转载请保留原文链接及作者。

目录