在.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();

            // 或将指定单元格范围导出为DataTable
            ExportTableOptions 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文件。


大丸子
12 声望3 粉丝