.NET中通过C#实现Excel与DataTable的数据互转

在.NET框架中,使用C#进行Excel数据与DataTable之间的转换是数据分析、报表生成、数据迁移等操作中的常见需求。这一过程涉及到将Excel文件中的数据读取并加载至DataTable中,以便于利用.NET提供的丰富数据处理功能进行操作,同时也包括将DataTable中的数据导出至Excel文件,以实现数据的可视化或共享。本文将介绍如何通过C#语言实现Excel数据与DataTable之间的高效转换

文章目录

    • 将数据从Excel表格导出到DataTable
    • 将数据从DataTable写入到Excel文件

本文使用的方法需要用到免费的Free Spire.XLS for .NET,NuGet:PM> Install-Package FreeSpire.XLS

将数据从Excel表格导出到DataTable

我们可以使用库中的ExportDataTable方法轻松将指定Excel工作表或工作表中指定单元格范围的数据导入DataTable对象中。当导出指定单元格范围到DataTable时,我们还可以使用ExportTableOptions对象作为参数对导出选项进行设置,如是否计算公式值、是否导出列名。以下是操作步骤示例:

  1. 导入所需模块。
  2. 创建Workbook对象,使用Workbook.LoadFromFile()方法载入Excel文件。
  3. 使用Workbook.Worksheets[]属性获取需要的工作表。
  4. 创建ExportTableOptions对象并使用其下的属性对导出选项进行设置,然后使用Worksheet.Range[].ExportDataTable()方法将指定单元格范围导出为DataTable实例。也可以直接使用Worksheet.Range[].ExportDataTable()方法将整个工作表导出为DataTable实例。
  5. 输出结果。

代码示例

using Spire.Xls;
using System.Data;namespace ExcelToDataTable
{class Program{static void Main(string[] args){// 创建Workbook的实例Workbook wb = new Workbook();// 载入Excel文件wb.LoadFromFile("Sample.xlsx");// 获取一个工作表Worksheet sheet = wb.Worksheets[0];// 将工作表数据导出为DataTable//DataTable dataTable = sheet.ExportDataTable();// 或将指定单元格范围导出为DataTableExportTableOptions options = new ExportTableOptions();options.ComputedFormulaValue = true;options.ExportColumnNames = false;options.KeepDataFormat = false;options.RenameStrategy = RenameStrategy.Letter;DataTable dataTable = sheet.Range[1, 1, 3, 3].ExportDataTable(options);// 输出DataTable的列名for (int i = 0; i < dataTable.Columns.Count; i++){Console.Write(dataTable.Columns[i].ColumnName + "\t");}Console.WriteLine();// 输出DataTable数据行foreach (DataRow row in dataTable.Rows){foreach (var item in row.ItemArray){Console.Write(item + "\t");}Console.WriteLine();}}}
}

结果
C#将Excel数据导入DataTable

将数据从DataTable写入到Excel文件

Worksheet.InsertDataTable(DataTable, insertHeaders: bool, firstRow: int, firstColumn: int)方法可以帮助我们直接向Excel工作表中写入DataTable数据。以下是操作步骤示例:

  1. 导入所需模块。
  2. 定义数据并使用数据构建DataTable对象。
  3. 创建Workbook实例。
  4. 使用Workbook.Worksheets.Clear()方法清除默认工作表,然后使用Workbook.Worksheets.Add()方法新建工作表。
  5. 使用Worksheet.InsertDataTable()方法将DataTable数据写入到工作表中。
  6. 可对单元格格式进行设置。
  7. 使用Workbook.SaveToFile()方法保存Excel文件。
  8. 释放资源。

代码示例

using Spire.Xls;
using System.Data;namespace DataTableToExcel
{class Program{static void Main(string[] args){// 定义数据列表并创建一个DataTable实例string[,] data = new string[,]{{ "Product", "Quantity", "SalesAmount" },{ "Product A", "100", "5000.0" },{ "Product B", "150", "7500.0" },{ "Product C", "200", "10000.0" },{ "Product D", "120", "6000.0" },{ "Product E", "180", "9000.0" }};DataTable dataTable = new DataTable();// 获取列数int columnCount = data.GetLength(1);// 添加列for (int col = 0; col < columnCount; col++){dataTable.Columns.Add(data[0, col]);}// 添加数据行for (int row = 1; row < data.GetLength(0); row++){DataRow dataRow = dataTable.NewRow();for (int col = 0; col < columnCount; col++){dataRow[col] = data[row, col];}dataTable.Rows.Add(dataRow);}// 创建Workbook的实例Workbook workbook = new Workbook();// 清除默认工作表并添加一个工作表workbook.Worksheets.Clear();Worksheet sheet = workbook.Worksheets.Add("SalesReport");// 将DataTable数据导入到工作表中sheet.InsertDataTable(dataTable, true, 1, 1);// 调整列宽for (int i = 1; i < sheet.AllocatedRange.ColumnCount; i++){sheet.AutoFitColumn(i);}// 保存到文件workbook.SaveToFile("output/DataTableToExcel.xlsx", FileFormat.Version2016);workbook.Dispose();}}
}

结果
C#将DataTable数据写入Excel

本文演示如何使用C#代码在.NET程序中导出Excel文件数据到DataTable以及导入DataTable数据到Excel文件。

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

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

相关文章

域名服务系统DNS (Domain Name System)

域名的介绍 熟悉了域名之后&#xff0c;不仅仅是应对考试&#xff0c;生活中看到一个常规的网址&#xff0c;我们也能快速想到这个网址对应的含义是什么&#xff0c;并且在记忆网址的时候也更加得心应手&#xff0c;快速了解域名中各个层级的含义&#xff0c;这是 非常有趣呢…

Kettle——CSV文件转换成excel文件输出

1.点击—文件—新建—转换 拖入两个组件&#xff1a; 按shift&#xff0b;鼠标左击建立连接&#xff0c;并点击主输出步骤&#xff0c; 点击CSV文件输入&#xff0c;选择浏览的csv文件&#xff0c;然后点击确定 同样&#xff0c;Excel也同上&#xff0c;只是要删除这个xls 并…

Select,poll,epoll和IO多路复用和NIO

Select&#xff0c;poll&#xff0c;epoll和IO多路复用和NIO IO 多路复用&#xff1a;是一种 I/O 处理机制&#xff0c;它允许单个线程同时处理多个 I/O 流&#xff08;如多个文件描述符对应的网络连接、文件操作等&#xff09;的输入输出操作&#xff0c;通过一种机制来监听这…

希尔排序(C语言)

一、步骤&#xff1a; 希尔排序的基本思想&#xff1a;先选定一个整数&#xff0c;把待排序文件中所有记录分成个组&#xff0c;所有距离为gap的记录分在同一组内&#xff0c;并对每一组内的记录进行排序。然后取重复上述分组和排序的工作。当到gap 1时&#xff0c;所有记录在…

自动驾驶为什么需要时间同步?高精度时间同步如何实现?

自动驾驶作为汽车与物联网技术、人工智能等高新技术融合的产物&#xff0c;具有新颖性、复杂性和巨大的挑战性。自动驾驶需要实时传输、处理海量数据&#xff0c;并实时做出决策&#xff0c;这不仅要求有通畅网络通信环境、强大的数据算力&#xff0c;更要求时间同步的超低时延…

【信号处理】基于联合图像表示的深度学习卷积神经网络

Combined Signal Representations for Modulation Classification Using Deep Learning: Ambiguity Function, Constellation Diagram, and Eye Diagram 信号表示 Ambiguity Function(AF) 模糊函数描述了信号的两个维度(dimensions):延迟(delay)和多普勒(Doppler)。 …

C++20 概念与约束(1)—— SFINAE

●《C20 概念与约束&#xff08;1&#xff09;—— SFINAE》 《C20 概念与约束&#xff08;2&#xff09;—— 初识概念与约束》 《C20 概念与约束&#xff08;3&#xff09;—— 约束的进阶用法》 1、从模板说起 众所周知&#xff0c;C在使用模板时&#xff0c;如果有多…

[极客大挑战 2019]PHP 1

[极客大挑战 2019]PHP 1 审题 猜测备份在www.zip中&#xff0c;输入下载文件。 知识点 反序列化 解题 查看代码 看到index.php中包含了class.php,直接看class.php中的代码 查看条件 当usernameadmin&#xff0c;password100时输出flag 构造反序列化 输入select中&#…

Kubebot:一款Google云平台下的Slackbot安全测试工具

Kubebot 今天给大家介绍的是一款名叫Kubebot的安全测试Slackbot&#xff0c;该工具基于Google 云平台搭建&#xff0c;并且提供了Kubernetes后端。 项目架构 数据流 1.API请求由Slackbot发起&#xff0c;发送至API服务器&#xff0c;API服务器以Kubernetes(K8s)集群中的Docke…

Kubernetes的基本构建块和最小可调度单元pod-0

文章目录 一&#xff0c;什么是pod1.1pod在k8s中使用方法&#xff08;1&#xff09;使用方法一&#xff08;2&#xff09;使用方法二 1.2pod中容器的进程1.3pod的网络隔离管理&#xff08;1&#xff09;pause容器的作用 1.4 Pod分类&#xff1a;&#xff08;1&#xff09;自主式…

Redis安装(Windows环境)

目录 1.下载2.双击安装后配置环境变量3.启动服务4.设置Windows服务5.启动客户端6.常用的Redis服务命令7.使用图形化界面工具查看Redis内部数据情况类似Navicat 连接数据库 1.下载 1.点击github下载地址 2.上方资源链接下载安装 2.双击安装后配置环境变量 3.启动服务 上图虽然…

windows下qt5.12.11使用ODBC远程连接mysql数据库

1、下载并安装mysql驱动,下载地址:https://dev.mysql.com/downloads/ 2、配置ODBC数据源,打开64位的ODBC数据源配置工具:

【AI写作宝-注册安全分析报告-无验证方式导致安全隐患】

前言 由于网站注册入口容易被黑客攻击&#xff0c;存在如下安全问题&#xff1a; 1. 暴力破解密码&#xff0c;造成用户信息泄露 2. 短信盗刷的安全问题&#xff0c;影响业务及导致用户投诉 3. 带来经济损失&#xff0c;尤其是后付费客户&#xff0c;风险巨大&#xff0c;造…

GFPS技术原理(四)GATT特征值

Fast Pair服务 fast pair 服务的UUID 是0xFE2C&#xff0c;然后它又包含多个特征值&#xff0c;下面一一分析&#xff1a; Model ID UUID是0x1233&#xff0c;设备在谷歌云注册的时候会分配一个24 bit的ID。 Key-based Pairing UUID是0x1234&#xff0c;这个是用来做DH密钥…

3.2 软件需求:面对过程分析模型

面对过程分析模型 1. 需求分析的模型概述1.1 面对过程分析模型-结构化分析方法1.2 结构化分析的过程 2. 功能模型&#xff1a;数据流图初步2.1 加工2.2 外部实体&#xff08;数据源点/终点&#xff09;2.3 数据流2.4 数据存储2.5 注意事项 3. 功能模型&#xff1a;数据流图进阶…

ExecStart=/usr/bin/mongod --config /etc/mongod.conf (code=exited, status=2)

mongodb 开启验证后出现这个问题 邪门的问题 居然是格式问题 要用两个空格表示缩进 而不是tab

数据分析——学习框架

✅作者简介&#xff1a;2022年博客新星 第八。热爱国学的Java后端开发者&#xff0c;修心和技术同步精进。 &#x1f34e;个人主页&#xff1a;Java Fans的博客 &#x1f34a;个人信条&#xff1a;不迁怒&#xff0c;不贰过。小知识&#xff0c;大智慧。 &#x1f49e;当前专栏…

YOLOV8应用|排球垫球计数|附带全部数据集与源码(见文末百度云盘链接)

项目简介: 该项目旨在利用YOLOv8算法实现排球垫球动作的自动识别与计数。YOLOv8作为计算机视觉领域的先进目标检测算法,具备高精度和实时性的特点,非常适合用于体育训练和测试中的自动化计数。项目将排球垫球视频作为输入,通过YOLOv8算法检测视频中的排球及垫球动作,自动…

今天给在家介绍一篇基于jsp的旅游网站设计与实现

项目描述 临近学期结束&#xff0c;还是毕业设计&#xff0c;你还在做java程序网络编程&#xff0c;期末作业&#xff0c;老师的作业要求觉得大了吗?不知道毕业设计该怎么办?网页功能的数量是否太多?没有合适的类型或系统?等等。这里根据疫情当下&#xff0c;你想解决的问…

CAN总线数据帧格式详细介绍

目录 1. CAN总线数据帧格式 2. 数据帧 2.1 帧起始 2.2 仲裁段 2.3 控制段 2.4 数据段 2.5 CRC 段 2.6 ACK段 2.7 帧结束 2.8 总结 3. 遥控帧 4. 错误帧 4.1 错误标志 4.1.1 主动错误标志 4.1.2 被动错误标志 4.2 错误界定符 5. 过载帧 6. …