核心实现Excel 转 DataTable1. 基础实现完整转换流程以下代码实现 Excel 文件到 DataTable 的核心转换逻辑覆盖 “加载 Excel 文件 → 选取目标工作表 → 调用封装方法完成数据转换 → 验证转换结果” 全流程可直接用于基础转换场景using Spire.Xls; using System; using System.Data; namespace ExcelToDataTableDemo { class Program { static void Main() { // 定义Excel文件路径 string excelFilePath Sample.xlsx; // 1. 初始化Workbook并加载Excel文件 Workbook workbook new Workbook(); workbook.LoadFromFile(excelFilePath); // 2. 获取第一个工作表索引从0开始 Worksheet sheet workbook.Worksheets[0]; // 3. 核心调用内置ExportDataTable方法转换 // 参数1要导出的单元格范围AllocatedRange表示工作表的有效数据范围 // 参数2是否将第一行作为DataTable的列名 DataTable dataTable sheet.ExportDataTable(sheet.AllocatedRange, true); // 4. 验证转换结果输出数据信息 Console.WriteLine( Excel转DataTable结果 ); // 输出总行数排除表头 Console.WriteLine($数据总行数{dataTable.Rows.Count}); // 输出列名 Console.Write(列名); foreach (DataColumn col in dataTable.Columns) { Console.Write(col.ColumnName \t); } Console.WriteLine(\n 数据内容 ); // 输出所有行数据 foreach (DataRow row in dataTable.Rows) { foreach (var cellValue in row.ItemArray) { Console.Write(cellValue \t); } Console.WriteLine(); } } } }2. 进阶用法自定义转换范围与参数ExportDataTable提供多个重载方法可满足“指定转换范围、是否导出计算公式值”等个性化开发需求以下是两类典型的进阶使用场景场景1指定行/列范围转换如第2-10行、第1-3列// 获取指定范围的单元格行/列索引均从1开始 CellRange targetRange sheet.Range[A2:C10]; // 转换指定范围且不将第一行作为列名因范围从第2行开始 DataTable dataTable sheet.ExportDataTable(targetRange, false);场景2转换时计算公式值// 重载方法第三个参数控制是否计算公式值。 // 参数说明 // range转换范围 // exportColumnNames是否将第一行作为列名 // computedFormulaValue是否计算公式值 DataTable dataTable sheet.ExportDataTable( sheet.AllocatedRange, true, true );在.NET开发中通过ExportDataTable方法可实现 Excel 数据到 DataTable 的批量转换该方法通过封装底层的单元格遍历、数据类型映射逻辑替代了手动逐单元格读取数据的方式是 Excel 与 DataTable 互转场景下的高效实现方案。
C# 中 Excel 转 DataTable 的技术实现
发布时间:2026/5/26 9:36:03
核心实现Excel 转 DataTable1. 基础实现完整转换流程以下代码实现 Excel 文件到 DataTable 的核心转换逻辑覆盖 “加载 Excel 文件 → 选取目标工作表 → 调用封装方法完成数据转换 → 验证转换结果” 全流程可直接用于基础转换场景using Spire.Xls; using System; using System.Data; namespace ExcelToDataTableDemo { class Program { static void Main() { // 定义Excel文件路径 string excelFilePath Sample.xlsx; // 1. 初始化Workbook并加载Excel文件 Workbook workbook new Workbook(); workbook.LoadFromFile(excelFilePath); // 2. 获取第一个工作表索引从0开始 Worksheet sheet workbook.Worksheets[0]; // 3. 核心调用内置ExportDataTable方法转换 // 参数1要导出的单元格范围AllocatedRange表示工作表的有效数据范围 // 参数2是否将第一行作为DataTable的列名 DataTable dataTable sheet.ExportDataTable(sheet.AllocatedRange, true); // 4. 验证转换结果输出数据信息 Console.WriteLine( Excel转DataTable结果 ); // 输出总行数排除表头 Console.WriteLine($数据总行数{dataTable.Rows.Count}); // 输出列名 Console.Write(列名); foreach (DataColumn col in dataTable.Columns) { Console.Write(col.ColumnName \t); } Console.WriteLine(\n 数据内容 ); // 输出所有行数据 foreach (DataRow row in dataTable.Rows) { foreach (var cellValue in row.ItemArray) { Console.Write(cellValue \t); } Console.WriteLine(); } } } }2. 进阶用法自定义转换范围与参数ExportDataTable提供多个重载方法可满足“指定转换范围、是否导出计算公式值”等个性化开发需求以下是两类典型的进阶使用场景场景1指定行/列范围转换如第2-10行、第1-3列// 获取指定范围的单元格行/列索引均从1开始 CellRange targetRange sheet.Range[A2:C10]; // 转换指定范围且不将第一行作为列名因范围从第2行开始 DataTable dataTable sheet.ExportDataTable(targetRange, false);场景2转换时计算公式值// 重载方法第三个参数控制是否计算公式值。 // 参数说明 // range转换范围 // exportColumnNames是否将第一行作为列名 // computedFormulaValue是否计算公式值 DataTable dataTable sheet.ExportDataTable( sheet.AllocatedRange, true, true );在.NET开发中通过ExportDataTable方法可实现 Excel 数据到 DataTable 的批量转换该方法通过封装底层的单元格遍历、数据类型映射逻辑替代了手动逐单元格读取数据的方式是 Excel 与 DataTable 互转场景下的高效实现方案。