采用application/vnd.ms-excel导出excel时修改文件名
时间: 2023-09-22 11:05:56 浏览: 147
你可以在导出Excel文件时,通过设置HTTP响应头中的Content-Disposition属性来修改文件名。具体来说,你需要在代码中添加如下语句:
```
response.setContentType("application/vnd.ms-excel");
response.setHeader("Content-Disposition", "attachment;filename=your_file_name.xls");
```
其中,response代表HTTP响应对象,your_file_name.xls是你想要设置的文件名。这样设置后,在用户下载Excel文件时,文件名就会被设置为your_file_name.xls。
相关问题
解释以下代码 handleExportXls(fileName){ if(!fileName || typeof fileName != "string"){ fileName = "导出文件" } let param = this.getQueryParams(); if(this.selectedRowKeys && this.selectedRowKeys.length>0){ param['selections'] = this.selectedRowKeys.join(",") } console.log("导出参数",param) downFile(this.url.exportXlsUrl,param).then((data)=>{ if (!data) { this.$message.warning("文件下载失败") return } if (typeof window.navigator.msSaveBlob !== 'undefined') { window.navigator.msSaveBlob(new Blob([data],{type: 'application/vnd.ms-excel'}), fileName+'.xls') }else{ let url = window.URL.createObjectURL(new Blob([data],{type: 'application/vnd.ms-excel'})) let link = document.createElement('a') link.style.display = 'none' link.href = url link.setAttribute('download', fileName+'.xls') document.body.appendChild(link) link.click() document.body.removeChild(link); //下载完成移除元素 window.URL.revokeObjectURL(url); //释放掉blob对象 } }) },
这段代码定义了一个函数 handleExportXls,用于导出 Excel 文件。首先,它会检查传入的文件名 fileName 是否存在且为字符串类型,如果不是则使用默认的文件名 "导出文件"。然后,它会调用 this.getQueryParams() 方法获取查询参数,并将选中的行的 keys 以逗号分隔的形式添加到查询参数中。接着,它会调用 downFile 方法下载 Excel 文件,并在下载完成后进行处理。如果浏览器支持 msSaveBlob 方法,则使用该方法将文件保存到本地;否则,创建一个链接并模拟点击该链接来下载文件。最后,移除该链接并释放 blob 对象。
整合代码 提供公共方法 // 设置响应头 response.setContentType("application/vnd.ms-excel"); response.setCharacterEncoding("utf-8"); response.setHeader("Content-Disposition", "attachment;filename=btfhList.xlsx"); // 使用 Easy Excel 写入数据到 Excel 文件 ExcelWriter writer = EasyExcel.write(response.getOutputStream(), DaHfysLog.class).build(); WriteSheet sheet = EasyExcel.writerSheet("恢复用户列表").build(); writer.write(list, sheet); writer.finish();
可以将上述代码进行封装,提供一个公共方法,方便其他地方调用。示例代码如下:
```
public void exportExcel(HttpServletResponse response, List<Object> dataList, Class<?> clazz, String sheetName, String fileName) throws IOException {
// 设置响应头
response.setContentType("application/vnd.ms-excel");
response.setCharacterEncoding("utf-8");
response.setHeader("Content-Disposition", "attachment;filename=" + URLEncoder.encode(fileName, "UTF-8"));
// 使用 Easy Excel 写入数据到 Excel 文件
ExcelWriter writer = EasyExcel.write(response.getOutputStream(), clazz).build();
WriteSheet sheet = EasyExcel.writerSheet(sheetName).build();
writer.write(dataList, sheet);
writer.finish();
}
```
使用方法如下:
```
List<Object> dataList = new ArrayList<>();
// 添加数据到 dataList 中
exportExcel(response, dataList, DaHfysLog.class, "恢复用户列表", "btfhList.xlsx");
```
其中,`response` 是 HttpServletResponse 对象,`dataList` 是要导出的数据列表,`clazz` 是数据实体类的 Class 对象,`sheetName` 是 Excel 文件的 sheet 名称,`fileName` 是 Excel 文件的文件名。
阅读全文