首页 > 其他分享 >Spring Boot下实现Excel导入导出

Spring Boot下实现Excel导入导出

时间:2023-08-15 17:08:15浏览次数:49  
标签:文件 Excel SpreadJS Spring 导出 导入 Boot

摘要:本文由葡萄城技术团队于51CTO原创并首发。转载请注明出处:[葡萄城官网],葡萄城为开发者提供专业的开发工具、解决方案和服务,赋能开发者。

前言

Spring Boot是由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.1 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服务端导入导出。

标签:文件,Excel,SpreadJS,Spring,导出,导入,Boot
From: https://blog.51cto.com/powertoolsteam/7090319

相关文章

  • 单元测试中的@SpringBootTest和@RunWith
    背景:平常都是写功能,写业务代码忽略了对测试案例的理解,借此机会梳理记录一下测试案例中常用到的的几个注解。一:@SpringBootTest作用是加载ApplicationContext,启动spring容器。使用@SpringBootTest时并没有像@ContextConfiguration一样显示指定locations或classes属性,原因在于@Sprin......
  • Spring boot与Spring cloud 之间的关系
    Springboot与Springcloud之间的关系Springboot是Spring的一套快速配置脚手架,可以基于springboot快速开发单个微服务,SpringBoot,看名字就知道是Spring的引导,就是用于启动Spring的,使得Spring的学习和使用变得快速无痛。不仅适合替换原有的工程结构,更适合微服务开发。Spring......
  • spring mvc 前端返回 js
    @RequestMapping(value="/test",produces="text/html;charset=UTF-8")@ResponseBodypublicStringtest(){Stringurl="";return"<script>window.location.href='"+url+"';</script>"; ......
  • 可能是全网最全的SpringBoot启动流程源码分析(最新3.x版本)
    @SpringBootApplication(scanBasePackages={"com.javaedge.base"})publicclassBaseApplication{publicBaseApplication(){}publicstaticvoidmain(String[]args){SpringApplication.run(BaseApplication.class,args);......
  • Spring面试攻略:如何展现你对Spring的深入理解
    什么是Spring?谈谈你对IOC和AOP的理解。Spring是一种Java开发框架,旨在简化企业级应用程序的开发和部署。它具有以下优点:对象托管:Spring能够管理和赋值所有对象,使开发人员不再需要手动管理对象的创建和依赖关系。动态代理:Spring的动态代理功能可以实现大部分可复用的逻辑功能,从......
  • com.alibaba.excel.exception.ExcelWriteDataConvertException: Can not find 'Conver
    这个异常是由于使用阿里巴巴的EasyExcel库时,没有找到映射为Map类型的数据转换器所导致的。在使用EasyExcel进行Excel文件读写时,需要指定正确的数据转换器以实现对象与Excel单元格的相互转换。对于Map类型的数据,EasyExcel需要知道如何将Map转换为Excel中的单元格数据,因此需要自定义......
  • Spring解决循环依赖的思路
    近期在准备找一些新的工作机会,在网上看了一些面试常见问题,看看自己是否能比较好的回答。今天的这个问题:Spring如何解决循环依赖。看到网上的各种文章的发布时间,这个题目应该是老面试题了,可能比我的码龄长。有很多结合源码来进行解读的文章,但是大多数,是在描述Spring如何解决循环依赖......
  • Spring Authorization Server (十一)单点登录
    前段时间有人问到单点登录如何实现,那本篇就来介绍一下单点登录的实现。由于单点登录涉及到多个客户端,本篇的客户端就以订单服务、商品服务为例。以下是单点登录中,订单服务、商品服务、认证服务器的交互时序图。认证服务器搭建认证服务的搭建可以参照本系列中的《SpringAuthorizati......
  • Vue+Element导出Excel表格示例
    <template><div@click="exportFn">导出</div></template><script>exportdefault{data(){return{query:{pageIndex:1,//当前页......
  • Spring简介
    1、简介●Spring:春天---->给软件行业带来了春天!●2002,首次推出了Spring框架的雏形:interface21框架!●Spring框架即以interface21框架为基础,经过重新设计,并不断丰富其内涵,于2004年3月24日发布了1.0正式版。●RodJohnson,SpringFramework创始人,著名作者。很难想象RodJohn......