项目中Excel文件下载的两种方法及其实现步骤详解

佚名
2024-12-19
来源:网络整理

项目开发里,用Excel下载功能是挺普遍的,可就是这功能背后,那些来源多样和操作上的小细节,常常让人头疼。

xml转excel_xml转excel_xml转excel

Excel下载来源简述

项目里头,Excel的下载渠道有两种。一种是直接用项目里现有的Excel文件来下载;还有一种是通过后台程序生成新的Excel文件后下载。后台那东西生成过程挺复杂的,咱们今天重点聊第一种。

xml转excel_xml转excel_xml转excel

在实际项目中,咱们经常遇到各种需求,比如需要业务数据报表啥的,通常都是直接用项目里现成的Excel表格。这样做既能省成本,又能提高效率。

说起这下载方法,得先做好几步实际工作,比如说得弄个特定的文件名,然后把那个要下载的test.xlsx文件放进去。这可是最基础的准备工作,就跟盖楼得先打好地基似的。

后台代码相关注意

xml转excel_xml转excel_xml转excel

后台代码方面,存在不少需要精细处理的地方。

说起来处理中文这事,Excel里要是包含中文,那得用这行代码:(.(.())),.UTF_8).("+", "%20"),这可是必须的。比如之前有个财务报表项目,不写这代码,前端就下载不了含有中文的Excel文件。至于英文文件,那就不用担心了。

接下来得把pom的代码加上去。在项目的pom文件里加入这些特定的代码,主要是为了防止下载的Excel文件因为压缩导致数据丢失,从而打不开。之前有一个库存管理项目,因为没有添加这个代码,结果下载的文件就打不开,挺尴尬的。

中文名称乱码问题


@GetMapping("/downTemplate") public ResponseEntity downTemplate() throws IOException { // 1. 获取 Excel 文件的相对路径 // String filePath = "test.xlsx"; String filePath = "template/test.xlsx"; log.info("获取excel的路径:{}", filePath); // 创建 ClassPathResource 对象,指定资源路径 ClassPathResource resource = new ClassPathResource(filePath); // 获取资源的输入流 InputStream inputStream = resource.getInputStream(); // 创建输入流资源 InputStreamResource inputStreamResource = new InputStreamResource(inputStream); // 设置响应头,指定下载的文件名和内容类型 HttpHeaders headers = new HttpHeaders(); String fileName = URLEncoder.encode(Objects.requireNonNull(resource.getFilename()), StandardCharsets.UTF_8).replace("+", "%20"); headers.add(HttpHeaders.CONTENT_DISPOSITION, "attachment; filename=" + fileName); // 返回带有 Excel 文件的响应实体 return ResponseEntity.ok() .headers(headers) .contentType(MediaType.parseMediaType("application/vnd.openxmlformats-officedocument.spreadsheetml.sheet")) .body(inputStreamResource); }

还有一个下载时中文名称乱码问题必须得提。

用某些方法测试时,中文名的Excel文件下载后名字会乱得不行,就是那种乱七八糟的样子。但其实文件里的数据并没有问题。记得在一个小数据统计项目里,我们碰到这事慌得要命,后来才发现是显示的问题,文件内容打开后一切正常。要是用浏览器下载就不会出现乱码这种麻烦了。

准备工作的细化

咱们得回头看一眼最初的准备工作。别小看了起名字这事,这里面可是有门道的。得考虑到项目的要求,还有实际用起来的情况。比如,给销售数据的Excel文件命名,得加上日期这样的标识。这在电商项目里尤其关键。


src/main/resources **/*.xlsx **/*.docx **/*.pdf true src/main/resources **/*.xlsx **/*.docx **/*.pdf false

放下载的test.xlsx文件得留心路径选择。不能随便乱塞,得放个方便系统找到的地方。就跟把家里的东西放得容易找一样,不然用的时候可就头疼了。

实际应用示例补充

在实际的项目应用中,比如说在企业内部使用的办公系统里。假如是人力资源部门需要下载员工的绩效考核Excel文档,按照这个方法来做会特别方便。直接用现有的文件,按照这里的编程规范来操作,就能轻松完成下载。

xml转excel_xml转excel_xml转excel

在供应链管理这个项目里,得下载库存信息的Excel表格。得先准备好现有的Excel文件,然后对后台的代码处理要严格按规矩来,这样才能高效地完成下载工作。

问题留给读者思考

我之前已经把关于下载Excel文件第一种方法的关键点都告诉你们了。现在我想问问,你们在处理项目的时候,是不是也遇到过因为代码细节不清晰导致下载出现问题的状况?希望咱们能多多交流讨论。如果觉得这篇文章有用,别忘了给它点个赞,还有分享出去。

xml转excel_xml转excel_xml转excel

咪酷科技-一站式企业数字化服务 www.mkpyw.com

阅读80
分享