您的位置:首页 > 健康 > 美食 > 代理招生平台_设计软件的软件_新手学seo_营销型网站推广

代理招生平台_设计软件的软件_新手学seo_营销型网站推广

2025/2/26 0:09:06 来源:https://blog.csdn.net/Eiceblue/article/details/143628674  浏览:    关键词:代理招生平台_设计软件的软件_新手学seo_营销型网站推广
代理招生平台_设计软件的软件_新手学seo_营销型网站推广

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

文章目录

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

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

将数据从DataTable导出到Excel文件

我们可以使用Worksheet.AllocatedRange属性获取Excel工作表中的已使用的单元格范围,然后根据行数和列数,读取数据并添加到DataTable对象中。以下是操作步骤:

  1. 导入所需模块。
  2. 创建Workbook对象,使用Workbook.LoadFromFile()方法载入Excel文件。
  3. 使用Workbook.Worksheets[]属性获取需要的工作表。
  4. 创建DataTable实例。
  5. 遍历工作表第一行数据,使用Worksheet.AllocatedRange[].Value属性获取其中单元格的值,最后使用DataTable.Columns.Add()方法将其导入为DataTable的列名。
  6. 遍历剩余各行,使用同样的方法获取单元格数据,并写入到DataTable各行中。
  7. 输出结果。

代码示例

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 = new DataTable();// 将第一行作为列名添加到DataTablefor (int col = 1; col <= sheet.AllocatedRange.ColumnCount; col++){if (sheet.AllocatedRange[1, col].Value != null){dataTable.Columns.Add(sheet.AllocatedRange[1, col].Value);}}// 遍历其余行并将数据添加到DataTablefor (int row = 2; row <= sheet.AllocatedRange.RowCount; row++){DataRow dataRow = dataTable.NewRow();for (int col = 1; col <= sheet.AllocatedRange.ColumnCount; col++){if (sheet.AllocatedRange[row, col].Value != null){dataRow[col - 1] = sheet.AllocatedRange[row, col].Value;}}dataTable.Rows.Add(dataRow);}// 输出列名foreach (DataColumn column in dataTable.Columns){Console.Write(column.ColumnName + "\t");}Console.WriteLine();// 输出数据行foreach (DataRow row in dataTable.Rows){foreach (var item in row.ItemArray){Console.Write(item + "\t");}Console.WriteLine();}}}
}

结果
C#将Excel数据导入DataTable

将数据从Excel表格导入DataTable

Worksheet.Range[].Value属性可以帮助我们直接向Excel工作表中的指定单元格写入数据。我们可以将从其他地方获取到的DataTable对象中的数据搭配此属性写入到Excel文件中。以下是操作步骤:

  1. 导入所需模块。
  2. 定义数据并使用数据构建DataTable对象。
  3. 创建Workbook实例。
  4. 使用Workbook.Worksheets.Clear()方法清除默认工作表,然后使用Workbook.Worksheets.Add()方法新建工作表。
  5. 遍历DataTable列,使用DataTable.Columns[].ColumnName属性获取列名,最后使用Worksheet.Range[].Value属性将列名写入工作表。
  6. 遍历DataTable数据行和列,使用DataTable.Rows[][].ToString()方法获取数据为字符串,最后使用Worksheet.Range[].Value属性将数据写入工作表。
  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");// 写入列名for (int col = 0; col < columnCount; col++){sheet.Range[1, col + 1].Value = dataTable.Columns[col].ColumnName;}// 写入数据行for (int row = 0; row < dataTable.Rows.Count; row++){for (int col = 0; col < columnCount; col++){sheet.Range[row + 2, col + 1].Value = dataTable.Rows[row][col].ToString();}}// 保存到文件workbook.SaveToFile("output/DataTableToExcel.xlsx", FileFormat.Version2016);workbook.Dispose();}}
}

结果
C#将DataTable数据写入Excel

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

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com