java 数据导出excel(前后端流导出HttpServletResponse)

1、HttpServletResponse是返回响应数据

2、后端请求接口代码,ExportVo:存放的是查询数据的条件,默认按照查出的数据全部导出

@PostMapping("/export")
    public void export(HttpServletResponse response,ExportVo exportVo) {
        service.export(exportVo,response);
    }

3、创建excel

@Override
    public void assetExport(ExportAssetInfoVo exportAssetInfoVo, HttpServletResponse response) {
	//定义一个新的工作簿
        XSSFWorkbook wb = new XSSFWorkbook();
        //创建一个Sheet页
        XSSFSheet sheet = wb.createSheet();
        XSSFRow row = sheet.createRow(0);//在第一行写入表头信息
        XSSFCell cell = row.createCell(i1);//创建第一行的某列
        cell.setCellValue(headList.get(i1));//向这一列添加数据
        //生成的excel格式按照自己的需求创建出来就行,最终以流的方式写入到工作簿(XSSFWorkbook)就可以
        Date date = new Date();
        SimpleDateFormat dateFormat = new SimpleDateFormat("yyyyMMddHHmmss");
        // 使用项目根目录, 文件名加上时间戳
//        String path = System.getProperty("user.dir") + "\\" + "文件名" + dateFormat.format(date) + ".xlsx";
        String path = dateFormat.format(date);//按照时间给文件起了个名
        try {
            // 输出Excel文件
            OutputStream outputStream = response.getOutputStream();
            // 下面几行是为了解决文件名乱码的问题
            response.setHeader("Content-Disposition", "attachment;filename=" + new String(path.getBytes(), "UTF-8") + ".xlsx");
            response.setContentType("application/vnd.ms-excel;charset=UTF-8");
            response.setHeader("Pragma", "no-cache");//关闭缓存
            response.setHeader("Cache-Control", "no-cache");//关闭缓存
            response.setDateHeader("Expires", 0);//为了让浏览器不要缓存页面,也可以利用Expires实体报关域,设置为0
            wb.write(outputStream);
            wb.close();
            outputStream.close();
        } catch (IOException e) {
            e.printStackTrace();
        }finally {
			//也可以在finally关闭流
        }
 }

4、前端获取到HttpServletResponse响应,浏览器自动解析,然后将生成的excel导出来

  • 1
    点赞
  • 13
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Java 导出 Excel 文件的完整程可以分为以下几个步骤: 1. 创建 Excel 文件和工作表 首先需要创建一个空的 Excel 文件,然后创建一个工作表,用于存储导出数据。可以使用 Apache POI 库来创建和操作 Excel 文件。 ```java // 创建工作簿 Workbook workbook = new XSSFWorkbook(); // 创建工作表 Sheet sheet = workbook.createSheet("Sheet1"); ``` 2. 添加表头和数据 接下来需要添加表头和数据到工作表中。可以从数据库或其他数据源中获取数据,然后将其添加到工作表中。表头和数据可以使用行和单元格的方式添加。 ```java // 创建表头行 Row headerRow = sheet.createRow(0); // 添加表头数据 Cell headerCell = headerRow.createCell(0); headerCell.setCellValue("姓名"); // 创建数据行 Row dataRow = sheet.createRow(1); // 添加数据 Cell dataCell = dataRow.createCell(0); dataCell.setCellValue("张三"); ``` 3. 导出 Excel 文件 当数据添加完毕后,需要将工作簿写入到文件中。可以使用 FileOutputStream 将工作簿写入到文件中。 ```java // 导出 Excel 文件 FileOutputStream outputStream = new FileOutputStream("export.xlsx"); workbook.write(outputStream); outputStream.close(); ``` 至此,Java 导出 Excel 文件的前端部分完成。接下来是前端部分。 4. 发送请求到后端导出 Excel 文件的请求发送到后端。可以使用 Ajax 发送请求,传递需要导出数据和文件名等参数。 ```javascript $.ajax({ url: '/export', method: 'POST', data: { data: data, // 需要导出数据 fileName: fileName // 文件名 }, success: function() { // 导出成功 }, error: function() { // 导出失败 } }); ``` 5. 后端处理请求 后端需要接收请求,生成 Excel 文件,然后将文件返回给前端。可以使用 Spring MVC 框架来处理请求。 ```java @RequestMapping(value = "/export", method = RequestMethod.POST) public void exportData(@RequestParam("data") String data, @RequestParam("fileName") String fileName, HttpServletResponse response) { // 生成 Excel 文件和工作表 Workbook workbook = new XSSFWorkbook(); Sheet sheet = workbook.createSheet("Sheet1"); // 将数据添加到工作表中 // 导出 Excel 文件 response.setHeader("Content-Disposition", "attachment; filename=\"" + fileName + "\""); workbook.write(response.getOutputStream()); } ``` 这样就完成了 Java 导出 Excel 文件的前后端完整程。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值