十分钟学会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<Employee> 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();
}

测试结果:


这样就完成了一个最基本的数据导出,需要调整excel样式的可以去官网参考:https://poi.apache.org/


评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值