在SpringBoot框架下实现Excel导入导出的方法详解

 更新时间:2023年06月18日 09:43:41   作者:葡萄城技术团队  
SpringBoot是由Pivotal团队提供的全新框架,其设计目的是用来简化新Spring应用的初始搭建以及开发过程,今天我们就使用纯前对按表格控件带大家了解,如何在Spring Boot框架下实现Excel服务端导入导出,需要的朋友可以参考下

1.IDEA创建SpringBoot项目

1.1 Spring Initializr

想要在IDEA下快速搭建一个SpringBoot项目,可以使用Spring Initializr工具作为脚手架。

进入IDEA后,在左侧菜单中可以找到Plugins,点击后,在上方的搜索框中输入Spring Initializr。

之后点击右上角的绿色Install按钮进行安装。

安装完毕后,在New Project 的时候就会多一个Spring Initializr的选项。

1.2 SpringBoot 项目的创建

Project SDK:根据实际应用情况选择用于配置项目所依赖的Java SDK。

Choose Spring Initializr Server:选择一个Spring Initializr服务器,一般来说都选择默认的。

GroupId:一般分为多个段,第一段为域,第二段为公司名称。例如:org.apache,com.grapecity。

ArtifactId:是项目的唯一标识符,在实际开发中一般对应项目的名称,就是项目根目录的名称。

Group Id,Artfact Id是保证项目唯一性的标识,一般来说如果项目打包上传至maven这样的包管理仓库中。在搜索你的项目时,Group Id,Artfact Id是必要的条件。

Version:版本号,默认0.0.1-SNAPSHOT。SNAPSHOT代表不稳定的版本,与之相对的有RELEASE。

Project type:工程的类型,maven工程还是gradle工程。

Language:语言(Java,Kotlin,Groovy)。

Packaging:Jar包还是War包。

Java version:语法版本,与Project SDK不同,Project SDK是实际用到的JDK。Java version指的是语法版本。一般来说语言特性不能比SDK高。比如SDK版本是11,语法选择8。那么实际项目中只能使用java 8的语法。反之SDK版本是8,语法选11就有问题了。一般情况下都会与SDK保持一致。

Project name:项目名称

Project description:项目描述

Package name:包名

第三部分根据项目的实际需求去配置。

第四部分:

设置项目名称与路径。

2.前端配置

考虑到导入导出功能需要对Excel具有较高的还原度,这里使用了SpreadJS组件,通过SpreadJS组件的ExcelIO功能,进行Excel的导入与导出。SpreadJS是一款纯前端的组件,与后端完全解耦,可以完美的整合到SpringBoot工程中。

2.1 前端页面创建

在static目录下建立index.html文件,用来绘制前端页面。如果用了thymeleaf也可以将文件建立在templates目录中。

2.2 SpreadJS组件引入和初始化

在header中引入SpreadJS相关的css与js引用。

创建SpreadJS对应的DOM对象。

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

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

导入导出事件处理,在事件中发送请求与服务端进行连接。

导入原理:

将服务端的文件以文件流的形式传输至前端,前端通过ExcelIO将结果导入结果呈现值SpreadJS中,所以导入的传递的参数是一个文件路径。注意该路径是文件在服务端或者工程中的一个路径。

导出原理:

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

3.后端配置

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

构建服务端的导入导出方法和相关逻辑。

服务器端导入:

由于前端传入的是一个文件的路径,所以参数这里我们需要一个字符串类型的参数去接收。

另外,我们会将流传到前端,所以会将流写到response中,所以参数中还需要response对象,方法本身不需要返回,返回空即可。原理是通过inputStream读取文件后,将其写入response的outputStream中。

导出到服务器:

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

4.测试运行

将工程跑起来之后进入主页面,显示如下

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

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

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

到这里我们就实现了Spring Boot框架下实现Excel服务端导入导出。

以上就是在SpringBoot框架下实现Excel导入导出的方法详解的详细内容,更多关于SpringBoot Excel导入导出的资料请关注脚本之家其它相关文章!

相关文章

  • SpringBoot中配置多数据源的方法详解

    SpringBoot中配置多数据源的方法详解

    这篇文章主要为大家详细介绍了SpringBoot中配置多数据源的方法的相关知识,文中的示例代码讲解详细,感兴趣的小伙伴可以跟随小编一起学习一下
    2024-02-02
  • SpringSecurity6.4中一次性令牌登录(One-Time Token Login)实现

    SpringSecurity6.4中一次性令牌登录(One-Time Token Login)实现

    Spring Security为一次性令牌认证提供了支持,本文就来介绍一下SpringSecurity6.4中一次性令牌登录(One-Time Token Login)实现,具有一定的参考价值,感兴趣的可以了解一下
    2025-03-03
  • k8s部署springboot实现前后端分离项目

    k8s部署springboot实现前后端分离项目

    本文主要介绍了k8s部署springboot实现前后端分离项目,主要包括配置文件、镜像构建和容器编排等方面,具有一定的参考价值,感兴趣的可以了解一下
    2024-01-01
  • SpringBoot读取外部配置文件的方法

    SpringBoot读取外部配置文件的方法

    这篇文章主要介绍了SpringBoot读取外部配置文件的方法,以端口配置为例,本文通过示例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2022-02-02
  • SpringBoot利用切面注解及反射实现事件监听功能

    SpringBoot利用切面注解及反射实现事件监听功能

    这篇文章主要介绍了springboot事件监听,通过利用切面、注解、反射实现,接下来将对这几种方式逐一说明,具有很好的参考价值,希望对大家有所帮助
    2022-07-07
  • 在Spring应用中进行单元测试的解析和代码演示

    在Spring应用中进行单元测试的解析和代码演示

    在Spring应用中进行单元测试通常涉及到Spring TestContext Framework,它提供了丰富的注解和工具来支持单元测试和集成测试,以下是如何在Spring应用中进行单元测试的详细解析和代码演示,需要的朋友可以参考下
    2024-06-06
  • Java中Stream流Map分组方式详细汇总

    Java中Stream流Map分组方式详细汇总

    Stream将要处理的元素集合看作一种流,在流的过程中借助Stream API对流中的元素进行操作,比如筛选、排序、聚合等,下面这篇文章主要给大家介绍了关于Java中Stream流Map分组方式的相关资料,需要的朋友可以参考下
    2024-01-01
  • Spring Cloud Zuul自定义过滤器的实现

    Spring Cloud Zuul自定义过滤器的实现

    这篇文章主要介绍了自定义Spring Cloud Zuul过滤器的实现,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2021-03-03
  • Mybatis-Plus CRUD操作方法

    Mybatis-Plus CRUD操作方法

    通用 Service CRUD 封装 IService 接口,进一步封装 CRUD 采用 get 查询、remove 删除 、list 查询集合、page 分页的前缀命名方式区分 Mapper 层避免混淆,这篇文章主要介绍了Mybatis-Plus CRUD的相关知识,需要的朋友可以参考下
    2023-10-10
  • 以Java代码的方式总结几个典型的内存溢出案例

    以Java代码的方式总结几个典型的内存溢出案例

    作为程序员,多多少少都会遇到一些内存溢出的场景,如果你还没遇到,说明你工作的年限可能比较短,或者你根本就是个假程序员!哈哈,开个玩笑.今天分享给大家Java内存溢出的相关案例,希望大家在日常工作中,尽量避免写这些low水平的代码,需要的朋友可以参考下
    2021-06-06

最新评论