C# .NET读取Excel文件并将数据导出到DataTable、数据库及文本

Excel文件是存储表格数据的普遍格式,因此能够高效地读取和提取信息对于我们来说至关重要。C#语言借助.NET Framework和各种库的广泛功能,能够进行高效的数据操作。利用C#读取Excel文件并将数据写入数据库和DataTable,或者将数据用于其他目的,对于开发人员来说是一个处理Excel数据的优秀解决方案。
本文主要介绍如何使用 C# 来读取 Excel 文件,包括以下部分:

文章目录

    • 使用C#读取Excel文件引导
    • C#代码读取Excel文件数据并写入文本
    • 使用C#代码将Excel文件读取到DataTable对象中
    • C#代码读取Excel文件并插入到数据库中

本文所使用的方法需要用到Excel文件处理库Spire.XLS for .NET,可从官网下载或在NuGet中搜索安装,也可在项目管理控制台输入:PM> Install-Package Spire.XLS安装。

使用C#读取Excel文件引导

为了有效地利用Spire.XLS for .NET读取Excel文件数据并写入其他位置,需要熟悉其中的一些类、属性和方法。下表总结了一些主要的类、属性和方法以及它们的功能和描述:

项目描述
Workbook代表Excel工作簿并提供读取和操作其内容的方法。
Worksheet代表工作簿中的单个工作表。
Workbook.LoadFromFile 方法从文件加载Excel工作簿。
Workbook.Worksheets 属性获取工作簿中的工作表集合。
Worksheet.Range[] 属性获取工作表中的单元格范围(索引从1开始)。
CellRange.Value 属性获取或设置单元格的值。
CellRange.Text 属性获取或设置单元格的显示文本。

读取Excel文件的典型工作流程包括以下步骤:

  1. 使用 Workbook.LoadFromFile() 方法加载Excel文件。
  2. 通过 Workbook.Worksheets[] 属性访问工作表。
  3. 通过 Worksheet.Range[] 属性访问单元格。
  4. 通过 CellRange.Text 属性访问单元格中显示的文本,或通过 CellRange.Value 属性访问单元格的值(文本、数字、公式等)。
  5. 检索数据,将数据写入文本文件、数据库等,或执行其他所需操作。
  6. 可以直接使用 Worksheet.ExportDataTable() 方法将单元格值导出到数据表,并返回一个DataTable对象。
  7. 还可以直接使用 Workbook.SaveToFile() 方法将工作簿转换为任何支持的格式。

C#代码读取Excel文件数据并写入文本

使用C#读取Excel文件并将数据写入文本文件的步骤如下:

  1. 导入所需的命名空间。
  2. 创建 Workbook 类的对象,并使用 Workbook.LoadFromFile() 方法加载Excel文件。
  3. 通过 Workbook.Worksheets[] 属性获取第一个工作表。
  4. 创建一个文本文件用于写入工作表中的数据。
  5. 遍历分配的行和列,在 Worksheet.Range[] 属性中访问单元格,并通过 CellRange.Text 属性获取每个单元格的显示文本,然后将其写入文本文件中。
  6. 释放资源。
    代码示例:
    C#
using Spire.Xls;
using System.IO;class Program
{static void Main(string[] args){// 加载Excel文件Workbook workbook = new Workbook();workbook.LoadFromFile("Sample.xlsx");// 获取第一个工作表Worksheet worksheet = workbook.Worksheets[0];// 创建输出文本文件string outputFile = "Output.txt";StreamWriter writer = new StreamWriter(outputFile);// 遍历工作表的行和列,并将数据写入文本文件for (int row = 1; row <= worksheet.LastRow; row++){for (int col = 1; col <= worksheet.LastColumn; col++){CellRange range = worksheet.Range[row, col];string cellValue = range.Text == null ? string.Empty : range.Text.ToString();writer.Write(cellValue + "\t"); // 使用制表符作为单元格数据的分隔符}writer.WriteLine(); // 写入换行符}// 关闭写入器并保存文本文件writer.Close();// 释放资源workbook.Dispose();}
}

读取结果:
C#读取Excel数据保存为文本

使用C#代码将Excel文件读取到DataTable对象中

DataTable是.NET Framework中表示数据表的对象。它用于在内存中存储和操作数据,并可以执行排序、筛选、修改和导出等操作。使用C#读取Excel文件数据并将其写入DataTable对象,可以方便进一步处理数据。以下是具体步骤:

  1. 导入所需的命名空间。
  2. 创建 Workbook 类的对象,并使用 Workbook.LoadFromFile() 方法加载Excel文件。
  3. 通过 Workbook.Worksheets[] 属性获取第一个工作表。
  4. 使用 Worksheet.ExportDataTable() 方法将工作表中的数据导出到一个 DataTable 对象中。
  5. 释放资源。

代码示例:
C#

using Spire.Xls;
using System.Data;namespace ExcelToAccess
{class Program{static void Main(string[] args){// 创建Workbook类的对象Workbook workbook = new Workbook();// 加载Excel文件workbook.LoadFromFile("Sample.xlsx");// 获取第一个工作表Worksheet worksheet = workbook.Worksheets[0];// 将工作表中的数据导出到一个DataTable对象DataTable dataTable = worksheet.ExportDataTable();workbook.Dispose();}}
}

C#代码读取Excel文件并插入到数据库中

这个示例展示了如何使用C#代码将Excel工作表数据写入Access数据库。这种方法还需要使用System.Data.OleDb命名空间。如果你使用的.NET Framework没有它,你可以通过在Package Management Console中输入以下代码来安装它:Install-Package System.Data.OleDb

读取Excel文件并插入到数据库的步骤如下:

  1. 导入所需的命名空间。
  2. 创建 Workbook 类的对象,并使用 Workbook.LoadFromFile() 方法加载Excel文件。
  3. 通过 Workbook.Worksheets[] 属性获取第一个工作表。
  4. 通过访问 Worksheet.Name 属性,获取工作表名称作为表名。
  5. 通过使用 Worksheet.Rows[] 属性访问第一行的 CellRange 对象,将每个列的值存储在一个字符串数组中,作为列名。
  6. 使用 OleDbConnection 连接到Access数据库,指定连接字符串和数据库文件路径。
  7. 通过动态生成一个用于创建表的SQL查询字符串,包括表名、列名和数据类型,创建数据表。
  8. 使用 OleDbCommand 对象和 ExecuteNonQuery 方法执行创建表的查询。
  9. 通过遍历Excel工作表的每一行(从第二行开始),构造带有参数化查询的插入语句,将每一行的数据插入Access数据库表中。
  10. 关闭数据库连接并释放资源。

代码示例:
C#

using Spire.Xls;
using System.Data.OleDb;class Program
{static void Main(string[] args){// 设置Excel文件路径string excelFilePath = "Sample.xlsx";// 设置Access数据库文件路径string accessDbFilePath = "Sample.accdb";// 加载Excel文件Workbook workbook = new Workbook();workbook.LoadFromFile(excelFilePath);// 获取第一个工作表Worksheet worksheet = workbook.Worksheets[0];// 使用工作表名称作为表名string tableName = worksheet.Name;// 获取第一行作为列名CellRange headerRange = worksheet.Rows[0];string[] columnNames = new string[headerRange.Columns.Length];for (int i = 0; i < headerRange.Columns.Length; i++){columnNames[i] = headerRange.Columns[i].Value.Replace(" ", "_");}// 连接到Access数据库string connectionString = $"Provider=Microsoft.ACE.OLEDB.12.0;Data Source={accessDbFilePath};Persist Security Info=False;";using (OleDbConnection connection = new OleDbConnection(connectionString)){connection.Open();// 创建表string createTableQuery = $"CREATE TABLE [{tableName}] ({string.Join(", ", columnNames.Select(c => $"[{c}] Memo"))})";using (OleDbCommand createTableCommand = new OleDbCommand(createTableQuery, connection)){createTableCommand.ExecuteNonQuery();}// 插入数据string insertQuery = $"INSERT INTO [{tableName}] ({string.Join(", ", columnNames.Select(c => $"[{c}]"))}) VALUES ({string.Join(", ", columnNames.Select(c => $"@{c}"))})";using (OleDbCommand insertCommand = new OleDbCommand(insertQuery, connection)){foreach (CellRange row in worksheet.Rows.Cast().Skip(1)){for (int i = 0; i < row.Columns.Length; i++){insertCommand.Parameters.AddWithValue($"@{columnNames[i]}", row.Columns[i].Value);}insertCommand.ExecuteNonQuery();insertCommand.Parameters.Clear();}}connection.Close();workbook.Dispose();}}
}

读取写入结果:

C#读取Excel数据并写入数据库

本文中介绍了如何使用 C# 来读取 Excel 文件并提取数据用于各种用途。通过利用 Spire.XLS for .NET 的强大功能,开发人员可以高效地处理 Excel 数据、将其导出为不同格式并增强数据驱动型应用程序。本文提供分步指导、代码示例和处理结果的图形展示。如果在使用中遇到任何问题,可通过Spire产品论坛获取技术支持。

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

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

相关文章

大数据开发之SparkSQL

第 1 章&#xff1a;spark sql概述 1.1 什么是spark sql 1、spark sql是spark用于结构化数据处理的spark模块 1&#xff09;半结构化数据&#xff08;日志数据&#xff09; 2&#xff09;结构化数据&#xff08;数据库数据&#xff09; 1.2 为什么要有sparksql hive on s…

Eyes Wide Shut? Exploring the Visual Shortcomings of Multimodal LLMs

大开眼界&#xff1f;探索多模态模型种视觉编码器的缺陷。 论文中指出&#xff0c;上面这些VQA问题&#xff0c;人类可以瞬间给出正确的答案&#xff0c;但是多模态给出的结果却是错误的。是哪个环节出了问题呢&#xff1f;视觉编码器的问题&#xff1f;大语言模型出现了幻觉&…

计算机网络基础概念解释

​ 1. 什么是网络 随着时代的发展&#xff0c;越来越需要计算机之间互相通信&#xff0c;共享软件和数据&#xff0c;即以多个计算机协同⼯作来完成业务&#xff0c;于是有了网络互连。 网络互连&#xff1a;将多台计算机连接在⼀起&#xff0c;完成数据共享。 数据共享本质是…

GPT科研应用与AI绘图及论文高效写作

详情点击链接&#xff1a;GPT科研应用与AI绘图及论文高效写作 一OpenAI 1.最新大模型GPT-4 Turbo 2.最新发布的高级数据分析&#xff0c;AI画图&#xff0c;图像识别&#xff0c;文档API 3.GPT Store 4.从0到1创建自己的GPT应用 5. 模型Gemini以及大模型Claude2二定制自己…

论文阅读笔记AI篇 —— Transformer模型理论+实战 (三)

论文阅读笔记AI篇 —— Transformer模型理论实战 &#xff08;三&#xff09; 第三遍阅读&#xff08;精读&#xff09;3.1 Attention和Self-Attention的区别&#xff1f;3.2 Transformer是如何进行堆叠的&#xff1f;3.3 如何理解Positional Encoding&#xff1f;3.x 文章涉及…

常用电子器件学习——MOS管

MOS管介绍 MOS&#xff0c;是MOSFET的缩写。MOSFET 金属-氧化物半导体场效应晶体管&#xff0c;简称金氧半场效晶体管&#xff08;Metal-Oxide-Semiconductor Field-Effect Transistor, MOSFET&#xff09;。 一般是金属(metal)—氧化物(oxide)—半导体(semiconductor)场效应晶…

【Unity学习笔记】Unity TestRunner使用

转载请注明出处&#xff1a;&#x1f517;https://blog.csdn.net/weixin_44013533/article/details/135733479 作者&#xff1a;CSDN|Ringleader| 参考&#xff1a; Input testingGetting started with Unity Test FrameworkHowToRunUnityUnitTest如果对Unity的newInputSystem感…

qnx 上screen + egl + opengles 最简实例

文章目录 前言一、qnx 上的窗口系统——screen二、screen + egl + opengles 最简实例1.使用 addvariant 命令创建工程目录2. 添加源码文件3. common.mk 文件4. 编译与执行总结参考资料前言 本文主要介绍如何在QNX 系统上使用egl和opengles 控制GPU渲染一个三角形并显示到屏幕上…

【Flink-CDC】Flink CDC 介绍和原理概述

【Flink-CDC】Flink CDC 介绍和原理概述 1&#xff09;基于查询的 CDC 和基于日志的 CDC2&#xff09;Flink CDC3&#xff09;Flink CDC原理简述4&#xff09;基于 Flink SQL CDC 的数据同步方案实践4.1.案例 1 : Flink SQL CDC JDBC Connector4.2.案例 2 : CDC Streaming ETL…

threejs学习

重要概念&#xff08;场景、相机、渲染器&#xff09; 如下图所示&#xff0c;我们最终看到浏览器上生成的内容是通过虚拟场景和虚拟相机被渲染器渲染后的结果&#xff0c;下面首先介绍这三个概念&#xff0c;将贯穿所有简单复杂的threejs项目。 场景 Scene 虚拟的3D场景&a…

Linux中文件属性的获取(stat、chmod、Istat、fstat函数的使用)

修改文件权限 函数如下&#xff1a; chmod/fchmod函数用来修改文件的访问权限: #include <sys/stat.h> int chmod(const char *path, mode_t mode); int fchmod(int fd, mode_t mode); 成功时返回0&#xff1b;出错时返回EOF 注意&#xff1a;在vmware和windows共享的文…

【2024-01-22】某极验3流程分析-滑块验证码

声明&#xff1a;该专栏涉及的所有案例均为学习使用&#xff0c;严禁用于商业用途和非法用途&#xff0c;否则由此产生的一切后果均与作者无关&#xff01;如有侵权&#xff0c;请私信联系本人删帖&#xff01; 文章目录 一、前言二、抓包流程分析1.刷新页面2.点击按钮进行验证…

PyTorch各种损失函数解析:深度学习模型优化的关键(2)

目录 详解pytorch中各种Loss functions mse_loss 用途 用法 使用技巧 注意事项 参数 数学理论公式 代码演示 margin_ranking_loss 用途 用法 使用技巧 注意事项 参数 数学理论公式 代码演示 multilabel_margin_loss 用途 用法 使用技巧 注意事项 参数 …

代码随想录第十五天| ● 层序遍历 10 ● 226.翻转二叉树 ● 101.对称二叉树

文章目录 层序遍历102. 二叉树的层序遍历思路一&#xff1a;递归思路二&#xff1a;层序遍历-迭代-借助队列 107. 二叉树的层序遍历 II思路&#xff1a;层序遍历后翻转数组result即可 199.二叉树的右视图思路&#xff1a;通过list数组储存每一层末尾值 637.二叉树的层平均值思路…

class_10:this关键字

this关键字是指向调用对象的指针 #include <iostream> #include <iostream> using namespace std;class Car{ public://成员数据string brand; //品牌int year; //年限//构造函数名与类名相同Car(string brand,int year){cout<<"构造函数中&#…

Element中的el-input-number+SpringBoot+mysql

1、编写模板 <el-form ref"form" label-width"100px"><el-form-item label"商品id&#xff1a;"><el-input v-model"id" disabled></el-input></el-form-item><el-form-item label"商品名称&a…

【Web前端开发基础】前端基础布局之百分比布局、flex布局

前端基础布局 目录 前端基础布局布局简介盒模型1. 标准盒模型2. 怪异盒模型3. 解决方案4. 代码示例 常见的布局单位百分比布局flex布局一、Flex布局是什么&#xff1f;二、基本概念三、容器属性flex-direction属性&#xff1a;决定主轴的方向&#xff08;即项目的排列方向&…

【数据结构】链表(单链表与双链表实现+原理+源码)

博主介绍&#xff1a;✌全网粉丝喜爱、前后端领域优质创作者、本质互联网精神、坚持优质作品共享、掘金/腾讯云/阿里云等平台优质作者、擅长前后端项目开发和毕业项目实战✌有需要可以联系作者我哦&#xff01; &#x1f345;附上相关C语言版源码讲解&#x1f345; &#x1f44…

开始学习Vue2(组件的生命周期和数据共享)

一、组件的生命周期 1. 生命周期 & 生命周期函数 生命周期&#xff08;Life Cycle&#xff09;是指一个组件从创建 -> 运行 -> 销毁的整个阶段&#xff0c;强调的是一个时间段。 生命周期函数&#xff1a;是由 vue 框架提供的内置函数&#xff0c;会伴随着 组件…

2024/1/24HTML学习:路径

路径 3.2.1路径的介绍 加载图片&#xff0c;需要找到对应的图片。 通过一定的路径 路径分两种 绝对路径&#xff08;了解&#xff09;相对路径&#xff08;常用&#xff09; 绝对路径&#xff1a;绝对位置&#xff0c;从盘符开始的路径 1.盘符开头D:\....................…