使用VUE+SpringBoot+EasyExcel 整合导入导出数据的教程详解

yizhihongxing

使用VUE+SpringBoot+EasyExcel 整合导入导出数据的教程详解

简介

数据的导入导出是一个web应用中很重要的功能,在开发中,往往需要对数据进行批量导入和导出。本文将介绍如何使用Vue+SpringBoot+EasyExcel进行数据的导入导出。

技术栈

  1. 前端:Vue.js

  2. 后端:SpringBoot

  3. 数据导入导出库:EasyExcel

准备工作

首先,需要安装并配置好Vue.js和SpringBoot。如果还没有安装的话,可以去官网查看详细的安装教程。

在此之上,我们还需要安装EasyExcel。EasyExcel 是阿里巴巴的开源 Java 项目,它实现了对 Excel 的读写操作,并提供了非常便捷的 API。我们可以通过引入依赖来使用 EasyExcel。

在SpringBoot中,可以使用以下方式引入 EasyExcel 的依赖:

<dependency>
    <groupId>com.alibaba</groupId>
    <artifactId>easyexcel</artifactId>
    <version>2.2.6</version>
</dependency>

具体步骤

导入数据

1.编写数据模型

首先,需要定义一个与 Excel 文件中的数据对应的数据模型。可以通过以下代码定义一个用户模型:

@Data
public class User {
    @ExcelProperty("姓名")
    private String name;

    @ExcelProperty("年龄")
    private Integer age;

    @ExcelProperty("性别")
    private String gender;

    @ExcelProperty("手机号")
    private String phone;
}

在这个模型中,@ExcelProperty 注解表示该属性与 Excel 文件的某个单元格对应。

2.编写导入逻辑

接下来,可以编写一个上传 Excel 文件并导入数据的接口。可以使用 SpringMVC 提供的 @RequestParam 注解来接收上传的文件。接着,通过EasyExcel的ReadExcel类,将上传的 Excel 文件解析成数据模型,然后保存到数据库中。

以下是一个简单的导入数据的代码示例:

@PostMapping("/import")
public ResultVO importUser(@RequestParam("file") MultipartFile file) {
    String filename = file.getOriginalFilename();
    try {
        List<User> userList = EasyExcel.read(file.getInputStream(), User.class, new UserListener()).sheet().doReadSync();
        userService.insertBatch(userList);
        return ResultVO.success();
    } catch (IOException e) {
        e.printStackTrace();
        return ResultVO.fail("上传失败,请重试。");
    }
}

在这个代码片段中,UserService 是一个服务类,insertBatch 方法将批量插入数据到数据库中。UserListener 是继承分析头和分析行监听器的类,用于校验数据。在实际应用中,可以根据需要编写自定义的监听器。

3.编写前端页面

最后一步是编写一个前端页面,用于上传 Excel 文件并将数据导入到后台。

以下是一个简单的实现示例:

<template>
  <div>
    <input type="file" @change="importData"/>
  </div>
</template>

<script>
export default{
  methods: {
    importData(e){
      const file = e.target.files[0];
      if(!file){
        return;
      }
      const formData = new FormData();
      formData.append('file', file);
      axios.post('/import', formData)
      .then(res => {
        if(res.data.code === 200){
          alert('导入成功');
        } else {
          alert('导入失败');
        }
      })
      .catch(err => {
        console.error(err);
      });
    }
  }
}
</script>

在这个实现中,我们通过 file 类型的 input 元素来选择 Excel 文件。在选择上传的 Excel 文件后,通过 FormData 将文件上传到后台,然后调用后台提供的接口来导入数据。

导出数据

导出数据和导入数据很类似,只是操作的反过来了。下面我们详细解释一下如何导出数据。

1.编写导出逻辑

首先,需要编写一个查询数据的接口,然后将查询到的数据返回给前端。

然后通过EasyExcel的WriteExcel类,将数据写入Excel文件,并把excel文件返回给用户。

以下是一个简单的导出数据的代码示例:

@GetMapping("/export")
public void exportUser(HttpServletResponse response){
    String name = "用户信息.xlsx";
    try {
        List<User> userList = userService.selectAll();
        response.setContentType("application/vnd.ms-excel;charset=UTF-8");
        response.setHeader("Content-Disposition", "attachment;filename=" + URLEncoder.encode(name, "UTF-8"));
        EasyExcel.write(response.getOutputStream(), User.class).sheet("用户信息").doWrite(userList);
    } catch (IOException e) {
        e.printStackTrace();
    }
}

在这个代码中,selectAll() 方法是从数据库中查询数据的。然后,通过设置响应的 ContentType 和 Content-Disposition 把 Excel 文件输出到前端。

2.编写前端页面

最后一步是编写一个前端页面,用于触发导出数据的接口。

以下是一个简单的实现示例:

<template>
  <div>
    <button type="button" @click="exportData">导出数据</button>
  </div>
</template>

<script>
export default{
  methods: {
    exportData(){
      axios.get('/export', {responseType: 'blob'})
      .then(res => {
        const url = window.URL.createObjectURL(res.data);
        const link = document.createElement('a');
        link.style.display = 'none';
        link.href = url;
        link.setAttribute('download', '用户信息.xlsx');
        document.body.appendChild(link);
        link.click();
      })
      .catch(err => {
        console.error(err);
        alert('导出失败');
      });
    }
  }
}
</script>

在这个实现中,我们通过一个按钮来触发导出数据。在按钮的点击事件中,我们使用 axios.get 请求后端的导出接口,并设置响应的 responseType 为 blob,然后在成功响应时,将接收到的 blob 数据转为 blob URL,并创建一个 a 标签,设置 href 和 download 属性,模拟用户点击 a 标签来触发下载。

结语

本文主要介绍了如何使用 Vue + SpringBoot + EasyExcel 实现数据的批量导入和导出。当然,本文中的实现只是一个简单的示例,实际应用中还需要根据具体需求做更详细的处理。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:使用VUE+SpringBoot+EasyExcel 整合导入导出数据的教程详解 - Python技术站

(0)
上一篇 2023年5月28日
下一篇 2023年5月28日

相关文章

  • 在VUE中实现文件下载并判断状态的方法

    实现文件下载并判断状态的方法涉及到前端和后端两个方面,主要的实现步骤如下: 前端部分:在Vue中发起文件下载请求,一般采用axios或者vue-resource等请求库来实现。具体步骤如下: 安装axios或者vue-resource npm install axios –save npm install vue-resource –save 引入相关库…

    Vue 2023年5月28日
    00
  • vue实现记事本小功能

    接下来我将为你讲解“Vue实现记事本小功能”的完整攻略。 第一步:搭建Vue项目 在开始Vue实现记事本小功能之前,我们需要先搭建一个Vue项目。如果你还没有安装Vue,请先进行安装: npm install vue 接着,我们可以使用Vue CLI快速搭建一个Vue项目。需要先全局安装Vue CLI: npm install -g @vue/cli 安装好…

    Vue 2023年5月28日
    00
  • 在axios中使用params传参的时候传入数组的方法

    在axios中使用params传参时,如果需要传入数组参数,可以按照以下步骤来进行。 在调用axios.get或axios.post时,将参数放在params或data中,并设置paramsSerializer的值为Qs.stringify,即使用qs对数组参数进行序列化。 示例代码: import axios from ‘axios’; import Qs…

    Vue 2023年5月29日
    00
  • Vue查询数据并通过bootstarp table渲染数据

    首先我们需要将Vue与Bootstrap Table集成,方法如下: 1. 安装依赖 npm install vue bootstrap-vue bootstrap jquery popper.js 2. 配置Bootstrap Table 在Vue的组件中,引入Bootstrap Table并在“mounted”钩子函数中初始化,示例如下: <tem…

    Vue 2023年5月27日
    00
  • this在vue和小程序中的使用详解

    this在vue和小程序中的使用详解 在Vue和小程序中,this指向的对象在不同的上下文中可能会有所不同,因此正确理解和使用this关键字非常重要。在本文中,将对Vue和小程序中this的用法进行详细的解释和说明,同时给出一些示例来加深理解。 Vue中的this 在Vue中,我们经常需要在组件的生命周期、方法和计算属性等中使用this。在Vue组件中,th…

    Vue 2023年5月27日
    00
  • Vue 列表过滤与排序的实现

    下面我来为您详细讲解Vue列表过滤与排序的实现的攻略。 1. Vue列表过滤的实现 Vue 列表过滤可以实现对列表数据的筛选和过滤功能。下面我们就来讲解如何使用Vue实现列表过滤。 1.1 在data中定义列表数据 我们首先需要在Vue实例的 data 属性中定义一个列表数据,例如: data () { return { list: [ { name: ‘张…

    Vue 2023年5月29日
    00
  • Vue中使用Lodash的实现示例

    下面是详细讲解“Vue中使用Lodash的实现示例”的完整攻略。 Vue中使用Lodash的实现示例 什么是Lodash Lodash 是一个现代 JavaScript 实用工具库,提供了许多常见的操作方法和函数。 在 Vue 中使用 Lodash 安装 Lodash 使用npm安装Lodash npm install –save lodash 或者是ya…

    Vue 2023年5月28日
    00
  • 通过vue-cli3构建一个SSR应用程序的方法

    构建一个SSR应用程序的过程相比较普通的SPA应用程序增加了许多复杂操作,但是通过Vue-cli3进行构建,可以简化这个过程。以下是构建一个SSR应用程序的详细步骤: 安装Vue-cli3 如果尚未安装Vue-cli3,请使用以下命令安装: npm install -g @vue/cli 创建一个Vue项目 vue create my-ssr-app cd …

    Vue 2023年5月27日
    00
合作推广
合作推广
分享本页
返回顶部