1.前端配置
考虑到导入导出功能需要对 Excel 具有较高的还原度,这里使用了 SpreadJS 组件,通过 SpreadJS 组件的 ExcelIO 功能,进行 Excel 的导入与导出。SpreadJS 是一款纯前端的组件,与后端完全解耦,可以完美的整合到 SpringBoot 工程中。
1.1 前端页面创建
在 static 目录下建立 index.html 文件,用来绘制前端页面。如果用了 thymeleaf 也可以将文件建立在 templates 目录中。

1.2 SpreadJS 组件引入和初始化
在 header 中引入 SpreadJS 相关的 css 与 js 引用。

创建 SpreadJS 对应的 DOM 对象。

在 JS 中初始化 SpreadJS 和导入导出 Excel 相关的 ExcelIO 对象。

通过按钮点击进行服务端导入与导出。

导入导出事件处理,在事件中发送请求与服务端进行连接。
导入原理:
将服务端的文件以文件流的形式传输至前端,前端通过 ExcelIO 将结果导入结果呈现值 SpreadJS 中,所以导入的传递的参数是一个文件路径。注意该路径是文件在服务端或者工程中的一个路径。

导出原理:
通过 SpreadJS ExcelIO 的功能将内容导出成 Excel 的 blob 流。之后将 blob 流传至服务器端,在服务器端进行保存 Excel 文件的操作。

2.后端配置
创建后端 controller ,可按照自身项目的包的层级分类进行创建。

构建服务端的导入导出方法和相关逻辑。
服务器端导入:
由于前端传入的是一个文件的路径,所以参数这里我们需要一个字符串类型的参数去接收。
另外,我们会将流传到前端,所以会将流写到 response 中,所以参数中还需要 response 对象,方法本身不需要返回,返回空即可。原理是通过 inputStream 读取文件后,将其写入 response 的 outputStream 中。

导出到服务器:
由于前端传入传入的是保存文件的名称以及文件 blob 文件流。服务器端需要两个参数,String 用来接收文件名称,MultipartFile 对象用来接收 blob 文件流。后端接受到文件流之后通过 transferTo 方法在指定目录下根军传来的 fileName 转存成新的文件。

3.测试运行
将工程跑起来之后进入主页面,显示如下:

点击服务端导入按钮,从服务器端下载指定的 Excel 文件并打开。

对该文件进行操作修改并点击服务端导出的按钮。

之后我们去服务器端的导出路径下查看,发下文件存在,用 Excel 打开文件后发现,修改后的内容健在并且其他内容显示均无问题。

到这里我们就实现了 Spring Boot 框架下实现 Excel 服务端导入导出。
本文链接:https://www.aiunk.com/3979/
“拼命对一个人好,生怕做错一点对方就不喜欢你,这不是爱,是取悦。”
评论(0)