在.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
对象作为参数对导出选项进行设置,如是否计算公式值、是否导出列名。以下是操作步骤示例:
- 导入所需模块。
- 创建
Workbook
对象,使用Workbook.LoadFromFile()
方法载入Excel文件。 - 使用
Workbook.Worksheets[]
属性获取需要的工作表。 - 创建
ExportTableOptions
对象并使用其下的属性对导出选项进行设置,然后使用Worksheet.Range[].ExportDataTable()
方法将指定单元格范围导出为DataTable实例。也可以直接使用Worksheet.Range[].ExportDataTable()
方法将整个工作表导出为DataTable实例。 - 输出结果。
代码示例
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();}}}
}
结果
将数据从DataTable写入到Excel文件
Worksheet.InsertDataTable(DataTable, insertHeaders: bool, firstRow: int, firstColumn: int)
方法可以帮助我们直接向Excel工作表中写入DataTable数据。以下是操作步骤示例:
- 导入所需模块。
- 定义数据并使用数据构建
DataTable
对象。 - 创建
Workbook
实例。 - 使用
Workbook.Worksheets.Clear()
方法清除默认工作表,然后使用Workbook.Worksheets.Add()
方法新建工作表。 - 使用
Worksheet.InsertDataTable()
方法将DataTable数据写入到工作表中。 - 可对单元格格式进行设置。
- 使用
Workbook.SaveToFile()
方法保存Excel文件。 - 释放资源。
代码示例
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#代码在.NET程序中导出Excel文件数据到DataTable以及导入DataTable数据到Excel文件。