不生成文件实现excel导出,只要正确生成了workbook就行,前端会拿到流,再经过前端处理就可以导出成xlsx文件

该博客介绍了如何实现日志管理系统的导出日志功能,使用了Swagger进行API定义,并着重强调了导出的文件在前后端分离的项目中可能遇到的乱码问题。在后端,通过设置响应头和内容类型来处理Excel文件的导出,同时调用服务获取数据并写入输出流。前端需配合处理以确保正确下载。
摘要由CSDN通过智能技术生成

@ApiOperation("日志管理>导出日志")
    @GetMapping("/export")
    @ApiImplicitParams({
            @ApiImplicitParam(name = "logIds", value = "日志id合集", dataType = "String", paramType = "query")})
    public void logExport(String logIds, HttpServletResponse response) throws IOException {
        OutputStream output=response.getOutputStream();
        response.reset();
        DateTimeFormatter df = DateTimeFormatter.ofPattern("格式yyyy等");
        response.setHeader("Content-disposition", "attachment; filename="+ df.format(LocalDateTime.now()) +"log.xlsx");
        response.setContentType("application/msexcel");
        response.setCharacterEncoding("UTF-8");
        //数据处理和workbook生成放到工具类和业务逻辑里去
        Workbook wkb =demoService.getFileStream(logIds);
        wkb.write(output);
        output.close();
    }

要注意这种写法是需要前端处理的,前后端分离的项目注意要到有前端的环境测,从Swagger页面下载的打开是乱码

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
好的,以下是一个利用 js-xlsx 实现 Excel 文件导入导出功能的示例: 首先在 HTML 文件中引入 js-xlsx 库: ```html <script src="https://cdn.jsdelivr.net/npm/xlsx/dist/xlsx.full.min.js"></script> ``` 然后在 JavaScript 文件中编写以下代码: ```javascript // 导出 Excel 文件 function exportExcel(data, filename) { const ws = XLSX.utils.json_to_sheet(data); const wb = XLSX.utils.book_new(); XLSX.utils.book_append_sheet(wb, ws, 'Sheet1'); XLSX.writeFile(wb, `${filename}.xlsx`); } // 导入 Excel 文件 function importExcel(file, callback) { const reader = new FileReader(); reader.readAsArrayBuffer(file); reader.onload = (e) => { const data = new Uint8Array(e.target.result); const workbook = XLSX.read(data, { type: 'array' }); const sheetName = workbook.SheetNames[0]; const worksheet = workbook.Sheets[sheetName]; const result = XLSX.utils.sheet_to_json(worksheet, { header: 1 }); callback(result); }; } ``` 其中,exportExcel 函数用于将数据导出Excel 文件,参数 data 为要导出的数据,filename 为导出文件名。 importExcel 函数用于导入 Excel 文件,参数 file 为要导入的文件,callback 为导入功后的回调函数,回调函数的参数 result 为导入的数据。 示例代码中使用了 FileReader 对象读取文件内容,然后使用 js-xlsx 库解析 Excel 文件并将数据转化为 JSON 格式。 使用示例: ```javascript const data = [ { name: '张三', age: 20, gender: '男' }, { name: '李四', age: 22, gender: '女' }, { name: '王五', age: 25, gender: '男' }, ]; exportExcel(data, 'test'); // 导出 Excel 文件文件名为 test.xlsx const inputElement = document.getElementById('input-file'); inputElement.addEventListener('change', (e) => { const file = e.target.files[0]; importExcel(file, (result) => { console.log(result); // 输出导入的数据 }); }); ``` 在 HTML 文件中添加一个文件选择框: ```html <input type="file" id="input-file"> ``` 用户选择一个 Excel 文件后,调用 importExcel 函数导入数据,并在回调函数中处理导入的数据。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值