EPPlus助力:优雅实现Excel数据到数据库的自动迁移之旅

这里我使用了Access数据库为例,导入EPPlus如果不会请看上一篇帖子

1.首先先设置EPPlus为非商业使用

  public Homes(){InitializeComponent();ExcelPackage.LicenseContext = OfficeOpenXml.LicenseContext.NonCommercial; // 设置EPPlus为非商业使用} 

2.Access数据库连接方法

 #region Access数据库连接public static DataSet Get(string sql){OleDbConnection oleDb = new OleDbConnection(@"Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" + Application.StartupPath + @"\你的根目录下的库名;" + "Jet OLEDB:Database Password = 你的数据库密码");oleDb.Close();DataSet dataSet = new DataSet();DataTable datatable = new DataTable();oleDb.Open();OleDbDataAdapter dbDataAdapter = new OleDbDataAdapter(sql, oleDb);dbDataAdapter.Fill(datatable);dataSet.Tables.Add(datatable);oleDb.Close();return dataSet;}#endregion

3.导入方法

  public static DataTable ReadExcelFile(string filePath){using (var package = new ExcelPackage(new FileInfo(filePath))){ExcelWorksheet worksheet = package.Workbook.Worksheets[0];DataTable table = new DataTable();int columns = worksheet.Dimension.Columns;// 添加表格列for (int col = 1; col <= columns; col++){table.Columns.Add(worksheet.Cells[1, col].Value.ToString());}// 添加数据行for (int row = 2; row <= worksheet.Dimension.Rows; row++){DataRow dataRow = table.NewRow();for (int col = 1; col <= columns; col++){dataRow[col - 1] = worksheet.Cells[row, col].Value;}table.Rows.Add(dataRow);}return table;}}

4.使用导入方法到导入到数据库

  private void button3_Click(object sender, EventArgs e){try{OpenFileDialog openFileDialog = new OpenFileDialog();openFileDialog.Filter = "Excel 文件 (*.xlsx)|*.xlsx|所有文件 (*.*)|*.*";openFileDialog.Title = "选择 Excel 文件";if (openFileDialog.ShowDialog() == DialogResult.OK){string filePath = openFileDialog.FileName;// 构建 SQL 语句DataTable excelData = ReadExcelFile(filePath);foreach (DataRow row in excelData.Rows){//这里{row["姓名"]}是你单元格中对应的每一列的表头Employee.Get($"INSERT INTO workers (Name,Age,Sex,Address,Salary,status) VALUES ('{row["姓名"]}',{row["年龄"]},'{row["性别"]}','{row["住址"]}','{row["薪资"].ToString().Replace("¥", "")}',0);");}}Flushed();//刷新数据NMessage("导入数据成功", NotificationType.Info);}catch (Exception ex){NMessage("导入数据失败"+ex.Message, NotificationType.Error);}}

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

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

相关文章

开发中的一些专业术语,POJO、PO...

在 Java 开发中&#xff0c;以下是常见的设计模式和概念&#xff1a; PO&#xff08;Persistent Object&#xff09;&#xff1a;持久化对象&#xff0c;也称为实体类或数据对象。它是与数据库表结构对应的类&#xff0c;通常用于表示持久化数据的实体。PO 类的属性与数据库表的…

《青少年成长管理2024》096 “项目计划:要素项目”3_3

《青少年成长管理2024》096 “项目计划&#xff1a;要素项目”3_3 五、能力类项目计划501 生活能力训练计划&#xff08;一&#xff09;0-2岁&#xff1a;基础自理能力培养&#xff08;二&#xff09;2-4岁&#xff1a;简单家务参与&#xff08;三&#xff09;4-6岁&#xff1a…

阿里easyExcel -- excel单元格自定义下拉选择(升级版)

背景 很久很久以前写了一篇类似的文章 阿里easyExcel – excel下载/导出/读取 (单元格自定义下拉选择、不支持图片) &#xff0c;用了没多久就发现不好用&#xff0c;限制太多&#xff08;以后遇到你就知道了&#xff09;&#xff0c;然后就有了现在迟到很久的文章&#xff0c…

Python中的字符频率统计:探索最频繁字符

Python中的字符频率统计&#xff1a;探索最频繁字符 一、引言 在Python编程中&#xff0c;字符串处理是一个常见的任务。有时&#xff0c;我们可能需要了解字符串中某个字符的出现频率&#xff0c;或者找出出现次数最多的字符。这种需求在文本分析、数据清洗、密码学等多个领…

python abs函数怎么用

abs()函数是Python的数字函数&#xff0c;用以返回数字的绝对值。 语法 以下是 abs() 方法的语法&#xff1a; abs( x ) 参数 x -- 数值表达式&#xff0c;可以是整数&#xff0c;浮点数&#xff0c;复数。 返回值 函数返回 x&#xff08;数字&#xff09;的绝对值&#x…

(十五)Servlet教程——Servlet文件上传

JSP和HTML标签一起使用&#xff0c;来允许用户把文件上传到服务器。 首先我们需要创建一个前端界面&#xff0c;创建上传文件表单时&#xff0c;需要注意以下几点&#xff1a; (1) 表单的method属性必须设置为POST方法&#xff0c; 不能使用GET方法。 (2) 表单enctype属性应该…

accelerator入门

一、目录 1 定义 2. DP、DPP的区别 3 实现 4. 测试比较 二、实现 定义 accelerator 是由大名鼎鼎的huggingface发布的&#xff0c;专门适用于Pytorch的分布式训练框架,是torchrun 的封装。 GitHub: https://github.com/huggingface/accelerate 官网教程&#xff1a;https://…

Python中的生成器是什么

生成器的工作原理 只要Python函数的主体中有yield关键字,该函数就是生成器函数。调用生成器函数,返回一个生成器对象。也就是说,生成器函数是生成器工厂。 下面以一个简单的函数说明生成器的行为: def gen123():yield 1yield 2yield 3print(gen123) # <function gen…

8、卷积Convolutions (CNN)

Today we finish off our study of collaborative filtering by looking closely at embeddings—a critical building block of many deep learning algorithms. Then we’ll dive into convolutional neural networks (CNNs) and see how they really work. We’ve used plen…

java: 通过证书访问etcd

一、首先&#xff0c;要使用cfssl生成etcd证书相关的文件(ca.pem server.pem server-key.pem ),然后把server-key.pem进行转换&#xff1a; openssl pkcs8 -topk8 -nocrypt -in server-key.pem -out server.key二、带证书启动etcd ./etcd --name infra0 --cert-file/root/s…

kaggle叶子分类比赛(易理解)

说实话网上很多关于叶子分类比赛的代码能取得的成绩都很好,但对于我这个业余人员太专业了&#xff0c;而且很多文章都有自己的想法&#xff0c;这让我这个仿写沐神代码的小菜鸡甚是头痛。 但好在我还是完成了&#xff0c;虽然结果并不是很好&#xff0c;但是如果跟着沐神走的同…

AI编码时代到来?实现编程梦想的利器—Baidu Comate测评

文章目录 Comate智能编码是什么&#xff1f;Comate支持的环境 Comate应用安装实际操作对话式生成代码生成代码注释智能单测项目测试调优功能 总结 Comate智能编码是什么&#xff1f; 在如今这个拥抱AI的时代&#xff0c;市面上已经产出了很多Ai代码助手&#xff0c;如果你还没…

【LeetCode算法】28. 找出字符串中第一个匹配项的下标

提示&#xff1a;此文章仅作为本人记录日常学习使用&#xff0c;若有存在错误或者不严谨得地方欢迎指正。 文章目录 一、题目二、思路三、解决方案四、JAVA截取字符串的常用方法4.1 通过subString()截取字符串* 一、题目 给你两个字符串 haystack 和 needle &#xff0c;请你在…

鸿蒙OpenHarmony南向:【Hi3516标准系统入门(IDE方式)】

Hi3516标准系统入门&#xff08;IDE方式&#xff09; 注意&#xff1a; 从3.2版本起&#xff0c;标准系统不再针对Hi3516DV300进行适配验证&#xff0c;建议您使用RK3568进行标准系统的设备开发。 如您仍然需要使用Hi3516DV300进行标准系统相关开发操作&#xff0c;则可能会出现…

CST电磁仿真查看模型的截面结构和生成Spice模型【入门教程】

通过Logfile查看仿真统计 一次性了解仿真统计! Post-Processing > Manage Results > Logfile 利用CPU Threads、Mesh Cells、Time Steps以及Total Solver Time等Logfile&#xff0c;可以一目了然地了解仿真统计。 &#xff08;1&#xff09;点击Post-Processing选项卡…

PPT如何录制视频?看这里,让你轻松上手!

在现代社会&#xff0c;演示文稿&#xff08;ppt&#xff09;已成为我们工作、学习和生活中不可或缺的一部分。无论是商务报告、教育培训还是产品展示&#xff0c;ppt都能以其直观、生动的形式有效地传达信息。可是你知道ppt如何录制视频吗&#xff1f;本文将为您介绍两种ppt录…

pycharm code行太长显示波浪线取消

实际操作如下&#xff1a;个人比较合适的位置为160,180时有点多 效果&#xff1a;

算法练习17——罗马数字转整数

LeetCode 13 罗马数字转整数 罗马数字包含以下七种字符: I&#xff0c; V&#xff0c; X&#xff0c; L&#xff0c;C&#xff0c;D 和 M。 字符 数值 I 1 V 5 X 10 L 50 C 100 D 500 M 1000 例如&#xff0c; 罗马数字 2 写做 II &#xff0c;即为两个并列的 1 。12 写做 XII …

c++ memset 指针示例

目录 C 传一个float指针&#xff0c;在函数内部修改指针的值 c memset 指针示例 C 传一个float指针&#xff0c;在函数内部修改指针的值 #include <iostream>// 定义一个函数&#xff0c;它接受一个指向float的指针 void modifyValue(float* ptr) {// 通过解引用指针来…

Tomcat8集群快速搭建指南

作为一名热衷于分布式系统的开发者&#xff0c;你或许对Tomcat8已经不陌生了。然而&#xff0c;单个Tomcat实例的性能和可用性总有瓶颈&#xff0c;要实现高可用性和更强的性能&#xff0c;就需要搭建一个Tomcat集群。在这篇文章中&#xff0c;我将带你一步步搭建一个基于Tomca…