Excel大数据量导入导出
文档:读Excel(文档已经迁移)
一、JAVA解析EXCEL工具EasyExcel
Java解析、生成Excel比较有名的框架有Apache poi、jxl。但他们都存在一个严重的问题就是非常的耗内存,poi有一套SAX模式的AP可以一定程度的解决一些内存溢出的问题,但POI还是有一些缺陷,比如07版Excel解压缩以及解压后存储都是在内存中完成的,内存消耗依然很大。easyexcel重写了poi对07版Excel的解析,能够原本一个3M的excel用POl sax依然需要100M左右内存降低到几M,并且再大的excel不会出现内存溢出,03版依赖POl的sax模式。在上层做了模型转换的封装,让使用者更加简单方便
64M内存1分钟内读取75M(46W行25列)的Excel
二、EasyExcel的使用
EasyExcel的相关依赖
<!-- Alibaba Excel 依赖 -->
<!--它提供了高性能的读写功能,特别适合处理大型 Excel 文件 -->
<dependency><groupId>com.alibaba</groupId><artifactId>easyexcel</artifactId><version>3.3.4</version>
</dependency>
<!-- Apache POI 依赖 -->
<!--poi 是 Apache POI 项目的核心库,提供了读写 Microsoft Office 格式文件的基础功能,包括 .xls 文件 -->
<dependency><groupId>org.apache.poi</groupId><artifactId>poi</artifactId><version>4.1.2</version>
</dependency>
<dependency><groupId>org.apache.poi</groupId><artifactId>poi-ooxml</artifactId><version>4.1.2</version>
</dependency>
<dependency><groupId>org.apache.poi</groupId><artifactId>poi-ooxml-schemas</artifactId><version>4.1.2</version>
</dependency>
<!-- SLF4J 和 Logback 依赖 -->
<!-- 日志 -->
<dependency><groupId>ch.qos.logback</groupId><artifactId>logback-classic</artifactId><version>1.2.11</version>
</dependency>
三、写Excel
@NoArgsConstructor
@AllArgsConstructor
@Data
@Builder
public class User {@ExcelProperty(value = "用户编号")private Integer userId;@ExcelProperty(value = "姓名")private String userName;@ExcelProperty(value = "性别")private String gender;@ExcelProperty(value = "工资")private Double salary;@ExcelProperty(value = "入职时间")private Date hireDate;// lombok 会生成getter/setter方法
}
1.简单写入方法一

/*** 简单写方法一*/@Testpublic void text01(){//创建一个Excel文档String fileName = "D:\\excel\\user1.xlsx";//根据user模板构建数据List<User> users = new ArrayList<>();User user1 = new User(1,"张三","男",666.66,new Date());User user2 = new User(2,"张三","男",666.66,new Date());User user3 = new User(3,"张三","男",666.66,new Date());User user4 = new User(4,"张三","男",666.66,new Date());users.add(user1);users.add(user2);users.add(user3);users.add(user4);//向Excel表格中写数据EasyExcel.write(fileName,User.class).sheet("用户信息").doWrite(users);}
2.简单写入方法二
/*** 简单写方法二*/@Testpublic void text02(){//创建一个Excel文档String fileName = "D:\\excel\\user2.xlsx";//根据user模板构建数据List<User> users = new ArrayList<>();User user1 = new User(1,"张三","男",666.66,new Date());User user2 = new User(2,"张三","男",666.66,new Date());User user3 = new User(3,"张三","男",666.66,new Date());User user4 = new User(4,"张三","男",666.66,new Date());users.add(user1);users.add(user2);users.add(user3);users.add(user4);//向Excel表格中写数据//创建ExcelWriter对象ExcelWriter excelWriter = EasyExcel.write(fileName, User.class).build();//创建sheet对象WriteSheet writeSheet = EasyExcel.writerSheet("用户信息").build();excelWriter.write(users,writeSheet);//关闭ExcelWriter对象(一定要关闭,不然会导致内存溢出)excelWriter.finish();}
3.排除掉某些不想添加的字段
/*** 排除掉模板中的某几项属性*/@Testpublic void text03(){//创建一个Excel文档String fileName = "D:\\excel\\user3.xlsx";//根据user模板构建数据List<User> users = new ArrayList<>();User user1 = new User(1,"张三","男",666.66,new Date());User user2 = new User(2,"张三","男",666.66,new Date());User user3 = new User(3,"张三","男",666.66,new Date());User user4 = new User(4,"张三","男",666.66,new Date());users.add(user1);users.add(user2);users.add(user3);users.add(user4);//设置排除的属性Set<String> set = new HashSet<>();set.add("salary");set.add("hireDate");//向Excel表格中写数据EasyExcel.write(fileName, User.class).excludeColumnFiledNames(set).sheet("用户信息").doWrite(users);}
4.复杂头数据写入
/*** 复杂头实体类*/
@NoArgsConstructor
@AllArgsConstructor
@Data
@Builder
public class ComplexHeadUser {@ExcelProperty(value = {"group1", "用户编号"}, index = 0)private Integer userId;@ExcelProperty(value = {"group1", "姓名"}, index = 1)private String userName;@ExcelProperty(value = {"group2", "入职时间"}, index = 2)private Date hireDate;
}
/*** 复杂头*/@Testpublic void text05(){//创建一个Excel文档String fileName = "D:\\excel\\user5.xlsx";//根据user模板构建数据List<ComplexHeadUser> users = new ArrayList<>();ComplexHeadUser user1 = new ComplexHeadUser(1,"张三",new Date());ComplexHeadUser user2 = new ComplexHeadUser(2,"张三",new Date());ComplexHeadUser user3 = new ComplexHeadUser(3,"张三",new Date());users.add(user1);users.add(user2);users.add(user3);//向Excel表格中写数据EasyExcel.write(fileName, ComplexHeadUser.class).sheet("用户信息").doWrite(users);}
//或
@Test
public void testWriteExcel6() {String filename = "D:\\study\\user6.xlsx";List<ComplexHeadUser> users = new ArrayList<>();for (int i = 1; i <= 10; i++) {ComplexHeadUser user = ComplexHeadUser.builder().userId(i).userName("大哥" + i).hireDate(new Date()).build();users.add(user);}// 向Excel中写入数据EasyExcel.write(filename, ComplexHeadUser.class).sheet("用户信息").doWrite(users);
}
处理百万级批量数据
/*** 创建User类模板,通过User类模板向Excel表格中写数据* @ExcelProperty这个注解用于指定Excel表格中该字段的显示名称(起名字)*/
@NoArgsConstructor
@AllArgsConstructor
@Data
@Builder
public class User {@ExcelProperty(value = "用户编号")private Integer userId;@ExcelProperty(value = "姓名")private String userName;@ExcelProperty(value = "性别")private String gender;@ExcelProperty(value = "工资")private Double salary;@ExcelProperty(value = "入职时间")private Date hireDate;// lombok 会生成getter/setter方法}
/*** 处理百万级批量数据*/@Testpublic void text06(){//创建一个Excel文档String fileName = "D:\\excel\\user6.xlsx";// 确保目录存在File directory = new File("D:\\excel");if (!directory.exists()) {directory.mkdirs();}// 分批大小int batchSize = 10000;// 创建 ExcelWriter 对象ExcelWriter excelWriter = EasyExcel.write(fileName, User.class).build();for (List<User> data : dataList(batchSize)) {// 创建 sheet 对象WriteSheet writeSheet = EasyExcel.writerSheet("用户信息").build();// 写数据excelWriter.write(data, writeSheet);}excelWriter.finish();System.out.println("Excel文件已成功创建!");}private List<List<User>> dataList(int batchSize) {List<List<User>> allData = new ArrayList<>();int totalRecords = 1000000; // 假设有 100 万条记录for (int i = 0; i < totalRecords; i += batchSize) {List<User> batch = new ArrayList<>();for (int j = 0; j < batchSize && i + j < totalRecords; j++) {User user = User.builder().userId(i + j + 1).userName("用户" + (i + j + 1)).gender(j % 2 == 0 ? "男" : "女").salary(10000.0 + (i + j) * 1000.0).hireDate(new Date()).build();batch.add(user);}allData.add(batch);}return allData;}
相关文章:
Excel大数据量导入导出
github源码 地址(更详细) : https://github.com/alibaba/easyexcel 文档:读Excel(文档已经迁移) B 站视频 : https://www.bilibili.com/video/BV1Ff4y1U7Qc 一、JAVA解析EXCEL工具EasyExcel Java解析、生成Excel比较…...
Blocked aria-hidden on an element because its descendant retained focus.
在使用el-popover和el-radio-group实现弹窗选择数据后调用el-popover的doClose()方法时一直报错! 经过分析发现el-popover及el-radio__original有aria-hidden属性,具体aria-hidden属性应用自行搜索了解。既然是这个玩意引起的,则在显示时将a…...
MIT开源7B推理模型Satori:用行动思维链进行强化学习,增强自回归搜索
自OpenAI的o1发布以来,研究社区为提升开源LLM的高级推理能力做出了诸多努力,包括使用强大的教师模型进行蒸馏、蒙特卡洛树搜索(MCTS)以及基于奖励模型的引导搜索等方法。 本研究旨在探索一个新的研究方向:使LLM具备自回…...
神经网络|(九)概率论基础知识-泊松分布及python仿真
【1】引言 在前序学习进程中,我们已经知晓二项分布是多重伯努利分布,二伯努利分布对应的是可以无限重复、结果只有两种可能的随机试验。 相关文章链接为: 神经网络|(八)概率论基础知识-二项分布及python仿真-CSDN博客 上述文章还调用nump…...
机器学习 —— 深入剖析线性回归模型
一、线性回归模型简介 线性回归是机器学习中最为基础的模型之一,主要用于解决回归问题,即预测一个连续的数值。其核心思想是构建线性方程,描述自变量(特征)和因变量(目标值)之间的关系。简单来…...
vs封装dll 给C#使用
一,vs创建控制台应用 创建控制台应用得好处时,我们可以自己测试接口,如果接口没有问题,改成dll重新编译一遍就可以。 二, 创建一个c 类,将所需提供得功能 封装到类中。 这样可以将 所有功能,进…...
V8 引擎:深入理解 JavaScript 的执行环境
🤍 前端开发工程师、技术日更博主、已过CET6 🍨 阿珊和她的猫_CSDN博客专家、23年度博客之星前端领域TOP1 🕠 牛客高级专题作者、打造专栏《前端面试必备》 、《2024面试高频手撕题》 🍚 蓝桥云课签约作者、上架课程《Vue.js 和 E…...
JDK 9新特性学习大纲
第1部分:引言与背景 第1章:JDK 9的诞生与目标 1.1 JDK 9的核心目标与设计哲学 1.2 JDK 9的重要更新概览 1.3 兼容性与升级策略 第2部分:模块化系统(Project Jigsaw) 第2章:模块化基础 2.1 模块化的背景…...
DeepSeek从入门到精通:全面掌握AI大模型的核心能力
文章目录 一、DeepSeek是什么?性能对齐OpenAI-o1正式版 二、Deepseek可以做什么?能力图谱文本生成自然语言理解与分析编程与代码相关常规绘图 三、如何使用DeepSeek?四、DeepSeek从入门到精通推理模型推理大模型非推理大模型 快思慢想&#x…...
MySQL数据库(七)SQL 优化
目录 一 插入数据 1 批量插入 2 手动提交事务 3 主键顺序插入 4* 使用load插入指令数据 二 主键优化 1 数据组织方式 2 页分裂 编辑3 页合并 4* 主键设计原则 三 order by 优化 四 group by 优化 五 limit 优化 六 count优化 七 update优化 一…...
Oracle数据连接 Dblink
拓展: oracle远程登陆数据库 1.oracle客户端或者服务端 2.修改你的电脑如下路径文件(服务器IP,服务器的数据库名,服务器的数据库端口号) c:\oracle\product\10.2.0\db_1\NETWORK\ADMIN\tnsnames.ora orcl_109 (DESCRIPTION …...
基于 Nginx 的 CDN 基础实现
概览 本文是对基于Nginx的CDN网络的学习笔记,阅读的代码为:https://github.com/leandromoreira/cdn-up-and-running 其中,先确定CDN中的一些基础概念: Balancer:负载均衡,即请求数据的流量最开始打到Bal…...
网络编程基础1
七层协议模型和四层协议模型 七层协议模型:物理层、数据链路层、网络层、传输层、会话层、表示层、应用层 四层协议模型:链路层、网络层、传输层、应用层 TCP通信流程 服务器端 (1)创建socket(socket) (2)绑定自己的IP(bind) (3)监听客户端连接(liste…...
Web3 跨链技术:构建互联互通的虚拟世界
随着区块链技术的蓬勃发展,我们正站在 Web3 时代的门槛上。Web3 不仅仅是技术的革新,它更是一场关于数据所有权和互联网自由的革命。然而,区块链技术的一个核心挑战是如何打破不同链之间的壁垒,实现信息和资源的自由流动。跨链技术…...
【专题】2025年我国机器人产业发展形势展望:人形机器人量产及商业化关键挑战报告汇总PDF洞察(附原数据表)
原文链接:https://tecdat.cn/?p39668 机器人已广泛融入我们生活的方方面面。在工业领域,它们宛如不知疲倦的工匠,精准地完成打磨、焊接等精细工作,极大提升了生产效率和产品质量;在日常生活里,它们是贴心…...
FPGA VGA timing
概念 VGA(Video Graphics Array)时序是控制VGA接口显示图像的关键参数,它主要包括行时序和场时序两部分。以下是对VGA时序的详细解释: 一、VGA接口简介 VGA接口是IBM公司在1987年推出的一种使用模拟信号的视频传输标准,具有成本低、结构简单、应用灵活等优点,至今仍被广…...
[7] 游戏机项目说明
[7] 游戏机项目说明 在这节课中,我们将学习如何基于FreeRTOS开发一个简单的游戏项目。我们会使用一个开源项目nwatch,它是一个基于STM32的开源手表,包含了三个游戏。我们的目标是将这个游戏移植到我们的开发板上,并逐步使用FreeR…...
UE学习日志#25、26 C++笔记#11 智能指针
注:本篇内容主要为《C20高级编程》的学习笔记 当智能指针离开作用域或被重置时,会自动释放所占用的资源。智能指针可用于管理在函数作用域内(或作为类的数据成员)动态分配的资源。也可以通过函数实参来传递动态分配的资源的所有权…...
Spring AI -使用Spring快速开发ChatGPT应用
前言 Spring在Java生态中一直占据大半江山。最近我发现Spring社区推出了一个Spring AI项目,目前该项目还属于Spring实验性项目,但是我们可以通过该项目,可以非常快速的开发出GPT对话应用。 本篇文章将会对SpringAI进行简单的介绍和使用&#…...
windows通过网络向Ubuntu发送文件/目录
由于最近要使用树莓派进行一些代码练习,但是好多东西都在windows里或虚拟机上,就想将文件传输到树莓派上,但试了发现u盘不能简单传送,就在网络上找到了通过windows 的scp命令传送 前提是树莓派先开启ssh服务,且Window…...
大语言模型需要的可观测性数据的关联方式
可观测性数据的关联方式及其优缺点 随着现代分布式架构和微服务的普及,可观测性(Observability)已经成为确保系统健康、排查故障、优化性能的重要组成部分。有效的可观测性数据关联方式不仅能够帮助我们实时监控系统的运行状态,还…...
python连点器
要实现一个用于抖音点赞的鼠标连点工具,可以通过编程或现有软件实现。以下是两种常见方法(但请注意:频繁自动化操作可能违反平台规则,需谨慎使用): 方法 1:使用现成工具(如 AutoClic…...
Nginx部署Umi React前端项目标准配置
文章目录 概要前端Umi项目配置文件请求后端Api打包 后端项目Nginx配置配置文件 错误信息 概要 使用UmiJs开发的前端项目打包部署在Nginx,主要是Umi中项目的配置和Nginx的配置 前端Umi项目 基于"umijs/max": "^4.3.24", "react": &…...
Ubuntu20.4软件应用打不开
安装 snap-store: 确保 Snap 已安装: Snap 是一个包管理系统,需要先确保 snapd 已经安装。如果系统中没有安装,可以通过以下命令来安装 Snap: sudo apt update sudo apt install snapd安装 snap-store: 使…...
如何在Vscode中接入Deepseek
一、获取Deepseek APIKEY 首先,登录Deepseek官网的开放平台:DeepSeek 选择API开放平台,然后登录Deepseek后台。 点击左侧菜单栏“API keys”,并创建API key。 需要注意的是,生成API key复制保存到本地,丢失…...
apisix的real-ip插件使用说明
k8s集群入口一般都需要过负载均衡,然后再到apisix。 这时候如果后台业务需要获取客户端ip,可能拿到的是lb或者网关的内网ip。 这里一般要获取真实ip需要做几个处理。 1. 负载均衡上,一般支持配置获取真实ip参数,需要配置上。然…...
基于 Ollama+Docker+OpenWebUI 的本地化部署deepseek流程
搭建deepseek 安装Ollama Ollama官方下载地址 下载完成后双击打开Ollama进行安装,点击install 安装完成后系统会弹出下图提示代表安装成功并且已启动 验证安装 ollama -v安装完成后,cmd 打开命令行窗口,输入 “ollama -v” 测试,显示 olla…...
打家劫舍3
今天和打家讲一下打家劫舍3 题目: 题目链接:337. 打家劫舍 III - 力扣(LeetCode) 小偷又发现了一个新的可行窃的地区。这个地区只有一个入口,我们称之为root。 除了 root 之外,每栋房子有且只有一个“父“…...
第三个Qt开发实例:利用之前已经开发好的LED驱动在Qt生成的界面中控制LED2的亮和灭
前言 上一篇博文 https://blog.csdn.net/wenhao_ir/article/details/145459006 中,我们是直接利用GPIO子系统控制了LED2的亮和灭,这篇博文中我们利用之前写好的LED驱动程序在Qt的生成的界面中控制LED2的亮和灭。 之前已经在下面两篇博文中实现了LED驱动…...
归一化与伪彩:LabVIEW图像处理的区别
在LabVIEW的图像处理领域,归一化(Normalization)和伪彩(Pseudo-coloring)是两个不同的概念,虽然它们都涉及图像像素值的调整,但目的和实现方式截然不同。归一化用于调整像素值的范围,…...
DeepSeek-V2 论文解读:混合专家架构的新突破
论文链接:DeepSeek-V2: A Strong, Economical, and Efficient Mixture-of-Experts Language Model 目录 一、引言二、模型架构(一)多头部潜在注意力(MLA):重塑推理效率(二)DeepSeekM…...
基于布谷鸟算法实现率定系数的starter
布谷鸟算法(Cuckoo Search, CS)是一种基于群体智能的优化算法,灵感来源于布谷鸟的繁殖行为以及宿主鸟发现外来蛋的概率。该算法由 Xin-She Yang 和 Suash Deb 在2009年提出。它结合了莱维飞行(Lvy flight)这一随机漫步…...
Java之自定义注解
介绍:在Java中,自定义注解是通过 interface 关键字定义的。注解是一种元数据,可以附加到类、方法、字段等代码元素上,用于提供额外的信息或配置。 1. 自定义注解的基本语法 使用 interface 关键字定义注解,注解中可以…...
SpringCloud面试题----Nacos和Eureka的区别
功能特性 服务发现 Nacos:支持基于 DNS 和 RPC 的服务发现,提供了更为灵活的服务发现机制,能满足不同场景下的服务发现需求。Eureka:主要基于 HTTP 的 RESTful 接口进行服务发现,客户端通过向 Eureka Server 发送 HT…...
prometheus配置大盘与告警
1、prometheus配置大盘 kube-prometheus-stack 定义 dashboard https://stackoverflow.com/questions/77271449/persist-grafana-dashboard-on-kube-prometheus-and-expose-itAlso to persist dashboards to outlive pod deletion follow the below steps: Create your cust…...
记录 | WPF创建和基本的页面布局
目录 前言一、创建新项目注意注意点1注意点2 解决方案名称和项目名称 二、布局2.1 Grid2.1.1 RowDefinitions 行分割2.1.2 Row & Column 行列定位区分 2.1.3 ColumnDefinitions 列分割 2.2 StackPanel2.2.1 Orientation 修改方向 三、模板水平布局【Grid中套StackPanel】中…...
git代理设置
在 Git 中,可以通过以下命令查看当前设置的代理配置: 查看 HTTP 代理 git config --get http.proxy查看 HTTPS 代理 git config --get https.proxy查看全局代理设置 如果你设置了全局代理,可以通过以下命令查看: git config …...
使用 Axios ——个人信息修改与提示框实现
目录 详细介绍:个人信息设置与修改页面实现 1. HTML 结构 2. CSS 样式 3. JavaScript 核心逻辑 a. 信息渲染与表单提交 b. 头像上传与预览 4. 功能详解 5. 总结 提示: 这段代码展示了如何创建一个简单的个人信息设置页面,包含用户个…...
(done) openMP学习 (Day11: 可怕的东西:内存模型,Atomics,Flush(Pairwise同步))
url: https://dazuozcy.github.io/posts/introdution-to-openmp-intel/#19-%E6%8A%80%E8%83%BD%E8%AE%AD%E7%BB%83%E9%93%BE%E8%A1%A8%E5%92%8Copenmp 这一节介绍了一些概念,包括 OpenMP 内存模型,串行一致性的概念,以及 Flush 操作ÿ…...
docker数据持久化的意义
Docker 数据持久化是指在 Docker 容器中保存的数据不会因为容器的停止、删除或重启而丢失。Docker 容器本身是临时性的,默认情况下,容器内的文件系统是临时的,容器停止或删除后,其中的数据也会随之丢失。为了确保重要数据…...
【漫话机器学习系列】084.偏差和方差的权衡(Bias-Variance Tradeoff)
偏差和方差的权衡(Bias-Variance Tradeoff) 1. 引言 在机器学习模型的训练过程中,我们常常面临一个重要的挑战:如何平衡 偏差(Bias) 和 方差(Variance),以提升模型的泛…...
android的Compose 简介
Jetpack Compose 简介 Jetpack Compose 是 Android 官方推出的声明式 UI 工具包,用于替代传统 XML 布局,简化界面开发流程。它基于 Kotlin 语言,通过函数式编程实现高效、灵活的 UI 构建,支持实时预览和更直观的状态管理。 优势…...
git学习
报错504:代理有问题 查看代理: 法1 export | grep proxy 法2 env | grep xxx设置代理HTTPS_PROXY为空: export HTTPS_PROXY重进入git bash,HTTPS_PROXYxxx,又出现了 有效的办法 无效的办法: #取消htt…...
Spring Boot 对接深度求索接口实现知识问答功能
Spring Boot 对接深度求索接口实现知识问答功能 一、概述 本文将详细介绍如何使用 Spring Boot 对接深度求索(DeepSeek)接口,实现知识问答功能。深度求索是一个强大的自然语言处理平台,提供多种 API 接口,包括知识问…...
探索Scikit-learn:Python中的机器学习宝库
探索Scikit-learn:Python中的机器学习宝库 引言 在数据科学和机器学习的世界中,Python无疑是最受欢迎的编程语言之一。而在Python的众多机器学习库中,Scikit-learn无疑是最闪耀的明星之一。Scikit-learn是一个开源的Python库,它…...
活动预告 | Power Hour: Copilot 引领商业应用的未来
课程介绍 智能化时代,商业应用如何实现突破?微软全球副总裁 Charles Lamanna 将为您深度解析,剖析其中关键因素。 在本次线上研讨会中,Charles Lamanna 将分享他在增强商业运营方面的独到见解与实战策略,深度解读商业…...
MIT6.824 Lecture 2-RPC and Threads Lecture 3-GFS
Lecture 2-RPC and Threads Go语言在多线程、同步,还有很好用的RPC包 《Effective Go》 线程是实现并发的重要工具 在分布式系统里关注多线程的原因: I/O concurrencyParallelismConvenience Thread challenges 用锁解决race问题 Coordination channel…...
MariaDB *MaxScale*实现mysql8读写分离
1.MaxScale 是干什么的? MaxScale是maridb开发的一个mysql数据中间件,其配置简单,能够实现读写分离,并且可以根据主从状态实现写库的自动切换,对多个从服务器能实现负载均衡。 2.MaxScale 实验环境 中间件192.168.12…...
Linux之Http协议分析以及cookie和session
Linux之Http协议分析以及cookie和session 一.分析请求行与响应行1.1请求行1.1.1资源的URL路径1.1.2常见的方法1.2响应行 二.cookie和session2.1cookie2.2session 一.分析请求行与响应行 在我们简单了解了请求和响应的格式以及模拟实现了请求和响应后我们已经可以通过网页来访问…...
Python Pandas(5):Pandas Excel 文件操作
Pandas 提供了丰富的 Excel 文件操作功能,帮助我们方便地读取和写入 .xls 和 .xlsx 文件,支持多表单、索引、列选择等复杂操作,是数据分析中必备的工具。 操作方法说明读取 Excel 文件pd.read_excel()读取 Excel 文件,返回 DataF…...