Excel 导入实例

news2024/11/25 1:06:11

在上一节的基础上,本文演示下如何导入excel数据。

Excel导入操作指导

  1. 继承ocean-easyexcel SDK,上一节打包生成
<dependency>
    <groupId>com.angel.ocean</groupId>
    <artifactId>ocean-easyexcel</artifactId>
    <version>1.0.0</version>
</dependency>
  1. 定义Excel数据导入模型
package com.angel.ocean.domain.dto;

import com.alibaba.excel.annotation.ExcelProperty;
import lombok.Data;

/**
 * Excel导入数据结构样例
 */
@Data
public class UserDataImportDTO {

    @ExcelProperty("用户名")
    private String username;

    @ExcelProperty("密码")
    private String password;

    @ExcelProperty("注册时间")
    private String createTime;
}
  1. 定义Excel数据导入业务类UserDataImportService,实现ExcelImportDataHandler,对导入数据进行处理
package com.angel.ocean.service;

import com.angel.ocean.domain.dto.UserDataImportDTO;
import com.angel.ocean.excel.ExcelImportDataHandler;
import java.util.List;

public class UserDataImportService implements ExcelImportDataHandler<UserDataImportDTO> {

    private UserService userService;

    public UserDataImportService(UserService userService) {
        this.userService = userService;
    }

    @Override
    public void handler(List<UserDataImportDTO> data) {
        userService.excelImport(data);
    }
}
package com.angel.ocean.service;

import com.alibaba.fastjson2.JSON;
import com.angel.ocean.domain.dto.UserDataImportDTO;
import lombok.extern.slf4j.Slf4j;
import org.springframework.stereotype.Service;
import java.util.List;

@Slf4j
@Service
public class UserService {

    public void excelImport(List<UserDataImportDTO> data) {
        log.info("{}", JSON.toJSONString(data));
    }
}
  1. 定义Excel数据导入业务接口
@PostMapping("import")
public ApiResult<?> importExcel(@RequestParam("file") MultipartFile file) throws IOException {

    InputStream inputStream = file.getInputStream();
    Integer sheetNo = 0;
    Integer headRowNumber = 1;
    ExcelImportDataHandler excelImportDataHandler = new UserDataImportService(userService);
    EasyExcelUtil.readExcel(excelImportDataHandler, inputStream, UserDataImportDTO.class, sheetNo, headRowNumber);

    return ApiResult.success();
}

Excel导入结果

需要导入Excel数据截图,总共16条数据:
在这里插入图片描述Excel导入接口演示:
在这里插入图片描述
服务端导入数据打印信息,可以看出16条数据,分两批入库。
在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1849661.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Python爬虫基础以及示例讲解

爬虫简介 网络爬虫 爬虫指在使用程序模拟浏览器向服务端发出网络请求&#xff0c;以便获取服务端返回的内容。 但这些内容可能涉及到一些机密信息&#xff0c;所以爬虫领域目前来讲是属于灰色领域&#xff0c;切勿违法犯罪。 爬虫本身作为一门技术没有任何问题&#xff0c;关…

品牌价值超1592亿,九牧是如何炼成“六边形战士”?

作者 | 吉羽 来源 | 洞见新研社 经历了多年高速发展的中国市场开始慢慢减速&#xff0c;消费者正变得越来越“挑剔”&#xff0c;在信息爆炸的今天&#xff0c;企业面临“需求”与“流量”的双重考验。 市场凭什么记住你&#xff1f;选择你&#xff1f; 答案只有一个&#x…

多模态MLLM都是怎么实现的(10)-Chameleon和Florence-2如果你想玩多模态就不能不了解

这个也是一个补充文&#xff0c;前9章基本把该讲的讲了&#xff0c;今天这个内容主要是因为Meta出了一个Chameleon&#xff0c;这个以后可能会成为LLaMA的一个很好的补充&#xff0c;或者说都有可能统一起来&#xff0c;叫LLaMA或者Chamleon或者什么别的&#xff0c;另外我司把…

Hive笔记-5

240619-Hive笔记-5 6.2.2 全表和特定列查询 1) 全表查询 hive (default)> select * from emp; select 查看你要查看的信息 from 你要从哪张表里面查 2) 选择特定列查询 hive (default)> select empno, ename from emp; 注意&#xff1a; &#xff08;1&#xff0…

Oracle基本语法(SQLPlus)

目录&#xff1a; 前言&#xff1a; 准备工作&#xff1a; 登录&#xff1a; 1.打开SQL Plus命令行工具 第一种方式&#xff1a; 第二种方式&#xff1a; 2.以不同用户登录 SYSTEM&#xff08;普通管理员&#xff09;&#xff1a; SYS(超级管理员)&#xff1a; 不显示…

搜索引擎推广基本概念与方法分享-华媒舍

销量是每个企业及个人在商业领域中追求的目标之一。而引擎霸屏推广就是一种高效的手段&#xff0c;通过该方法可以助你实现销量的狂揽。本文将为你科普引擎霸屏推广的基本概念与方法&#xff0c;帮助你了解如何运用这一有效的推广策略。 一、引擎霸屏推广 引擎霸屏推广指的是在…

什么是电商大数据?主流电商大数据的采集||关键性技术|电商API接口接入说明

大数据的时代早已到来&#xff0c;然而想要全方位掌握大数据&#xff0c;务必要掌握大数据造成的时代特征&#xff0c;之前大数据被视为废物&#xff0c;如今被视为财产。主流电商大数据的采集&#xff0c;电商API接口的接入在大多数人理解中&#xff0c;是企业用数据来优化自己…

Electron快速入门(二):在(一)的基础上修改两个文件完成自定义显示时间和天气的标题栏

修改主进程:main.js // main.jsconst { app, BrowserWindow } = require("electron"); const path = require("node:path"); const createWindow = () => {try {const mainWindow = new BrowserWindow({width: 1200,height: 870,alwaysOnTop: true,fr…

什么是数据库?从零开始了解数据库基础概念

什么是数据库&#xff1f;从零开始了解数据库基础概念 相信大家在日常生活中都听到过大数据&#xff0c;数据这个东西越来越火&#xff0c;比如交通大数据、旅游大数据等&#xff0c;&#xff0c;&#xff0c;数据成为了企业决策和业务运作的关键元素。而管理这些庞大而复杂的…

使用Python和NLTK进行NLP分析的高级指南

在本文中&#xff0c;将利用数据集来比较和分析自然语言。 本文涵盖的基本构建块是&#xff1a; WordNet和同义词集相似度比较树和树岸命名实体识别 WordNet和同义词集 WordNet是NLTK中的大型词汇数据库语料库。WordNet维护与名词&#xff0c;动词&#xff0c;形容词&#…

MySQL之复制(十一)

复制 复制的问题和解决方案 数据损坏或丢失的错误 当一个二进制日志损坏时&#xff0c;能恢复多少数据取决于损坏的类型&#xff0c;有几种比较常见的类型: 1.数据改变&#xff0c;但事件仍是有效的SQL 不幸的是&#xff0c;MySQL甚至无法察觉这种损坏。因此最好还是经常检查…

如何在不同的操作系统中查看路由器的IP地址?这里有详细步骤

如果你曾经需要访问路由器的设置页面来进行一些配置更改,你知道你需要路由器的IP地址才能访问。如果你忘记了这个IP地址是什么,下面是如何在几乎所有平台上找到它的。 为什么路由器的IP很有用 在网络世界中,默认网关是一个IP地址,当流量被发送到当前网络之外的目的地时,…

C语言入门系列:指针入门(超详细)

文章目录 一&#xff0c;什么是指针1&#xff0c;内存2&#xff0c;指针是什么&#xff1f; 二&#xff0c;指针的声明1&#xff0c;声明指针类型变量2&#xff0c;二级指针 三&#xff0c;指针的计算1&#xff0c;两个指针运算符1.1 *运算符1.2 & 运算符1.3 &运算符与…

System.Runtime, Version=6.0.0.0,生成的dll使用出现错误问题

解决&#xff1a; 1.unity左上角file点击选中build settings 点击player settings &#xff0c;然后在player的window的other settings的configuration更改为 Framerwork 其实这个不换也可以的&#xff0c;我后面调试完&#xff0c;发现这个不是重点&#xff0c;下面第2点才是…

欧洲杯数据控@20240621

点击标题下「蓝色微信名」可快速关注 西班牙成为第二支晋级淘汰赛的球队。 今日积分榜&#xff0c; 今日射手榜&#xff0c; 今日助攻榜&#xff0c; 本届欧洲杯相关文章&#xff0c; 《欧洲杯赛况20240621》 《欧洲杯数据控20240620》 《欧洲杯赛况20240620》 《欧洲杯数据控2…

五十五、openlayers官网示例Loading Spinner解析——给地图添加loading效果,瓦片图层加载时等待效果

官网demo地址&#xff1a; Loading Spinner 这篇介绍了一个非常简单的loading效果 利用地图的loadstart和loadend事件&#xff0c;动态的添加和删除class名。 map.on("loadstart", function () {map.getTargetElement().classList.add("spinner");});map…

C语言| 宏定义

#define 标识符 常量 这是固定格式&#xff0c;一般放在#include <stdio.h>后面&#xff0c;标识符是临时的符号&#xff0c;预处理之后就不存在了。 宏所表示的常量可以是数字、字符、字符串、表达式。其中最常用的是数字。 宏定义最大的好处是方便修改常量&#xff…

【Redis】List的常用命令以及常用场景

Redis List 是一个简单的链表&#xff0c;支持在两端进行插入和删除操作。这种数据结构在许多场景下非常有用&#xff0c;例如任务队列、消息队列等。Redis 提供了一系列针对 List 的操作命令&#xff0c;帮助我们更高效地操作链表。 1. List常用命令 操作类型命令时间复杂度…

Nginx实战:简单登录验证配置(基于openssl)

本文提供的是基于openssl创建的密码文件,对nginx指定的location访问。进行登录验证的配置方式。 1、验证页面配置 我的nginx实验环境是直接yum安装的,如果是自己编译安装的那么对应目录就是自己安装配置的目录。 先在/usr/share/nginx/html下创建一个usertest.html,里面添加…

Swift Combine — Notification、URLSession、Timer等Publisher的理解与使用

Notification Publisher 在Swift的Combine框架中&#xff0c;可以使用NotificationCenter.Publisher来创建一个能够订阅和接收通知的Publisher。 // 创建一个订阅通知的Publisher let notificationPublisher NotificationCenter.default.publisher(for: Notification.Name(&…