在 .NET 应用程序中,Excel 文件和 DataTable 之间的高效地转换数据对于提升数据的可访问性、分析和处理能力至关重要。将数据从 Excel 转移到 DataTable 后,开发者可以利用 .NET 的强大功能进行数据分析、转换和处理,而将数据转换回 Excel 则方便了数据的共享、报告以及与其他系统的集成。本文演示了如何使用 Spire.XLS for .NET,通过 C# 代码将 Excel 数据导出到 DataTable,以及从 DataTable 导入数据到 Excel 文件。
安装 Spire.XLS for .NET
首先,您需要将 Spire.XLS for .NET 包含的 DLL 文件作为引用添加到您的 .NET 项目中。DLL 文件可以从此链接下载,也可以通过 NuGet 安装。
PM> Install-Package Spire.XLS
用 C# 将 Excel 数据导出到 DataTable
Spire.XLS for .NET 提供的 Worksheet.ExportDataTable() 方法,可以将整个 Excel 工作表的数据导出到 DataTable 对象。此外,还有 Worksheet.Range[].ExportDataTable() 方法可以从指定的单元格范围导出到 DataTable。开发人员可以使用 ExportTableOptions 类来自定义导出单元格范围时的导出选项。导出 Excel 数据到 DataTable 的步骤如下:
- 创建 Workbook 类的实例,并使用 Workbook.LoadFromFile() 方法加载 Excel 文件。
- 通过 Workbook.Worksheets[] 属性访问 Excel 文件中的工作表。
- 使用 Worksheet.ExportDataTable() 方法将整个工作表的数据导出到 DataTable 对象。
- 也可以创建 ExportTableOptions 实例以指定导出选项,使用 Worksheet.ExportDataTable() 方法结合 ExportTableOptions 实例,将特定单元格范围的数据导出到 DataTable。
- C#
using Spire.Xls;
using System.Data;
namespace ExcelToDataTable
{
class Program
{
static void Main(string[] args)
{
// 创建一个 Workbook 实例
Workbook wb = new Workbook();
// 加载 Excel 文件
wb.LoadFromFile("示例.xlsx");
// 获取一个工作表
Worksheet sheet = wb.Worksheets[0];
// 导出工作表数据到 DataTable
//DataTable dataTable = sheet.ExportDataTable();
// 或者导出指定单元格范围到 DataTable
ExportTableOptions options = new ExportTableOptions();
options.ComputedFormulaValue = true;
options.ExportColumnNames = false;
options.KeepDataFormat = true;
options.RenameStrategy = RenameStrategy.Letter;
DataTable dataTable = sheet.Range[2, 1, 4, 6].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# 将 DataTable 数据导入 Excel 文件
Spire.XLS for .NET 还提供了 Worksheet.InsertDataTable(DataTable, colHeaders: bool, firstRow: int, firstColumn: int) 方法,可以将 DataTable 对象的数据直接插入到 Excel 工作表中。将 DataTable 数据导入 Excel 的详细步骤如下:
- 定义数据并创建 DataTable 对象。
- 创建 Workbook 实例,并使用 Workbook.Worksheets.Clear() 方法清除默认工作表。
- 使用 Workbook.Worksheets.Add(sheetName: string) 方法插入指定名称的新工作表。
- 使用 Worksheet.InsertDataTable() 方法将 DataTable 对象中的数据插入到工作表中。
- 根据需要调整格式。
- 使用 Workbook.SaveToFile() 方法保存工作簿。
- C#
using Spire.Xls;
using System.Data;
namespace DataTableToExcel
{
class Program
{
static void Main(string[] args)
{
// 定义数据集并创建 DataTable 实例
// 用新的产品和数量重定义数据数组
string[,] data = new string[,]
{
{ "类别", "书名", "作者", "出版社", "价格(元)" },
{ "小说", "平凡的世界", "路遥", "人民文学出版社", "45" },
{ "科技", "深入浅出计算机组成原理", "杨帆", "机械工业出版社", "79" },
{ "历史", "明朝那些事儿", "当年明月", "中国友谊出版公司", "39.8" },
{ "哲学", "存在与时间", "马丁•海德格尔", "生活•读书•新知三联书店", "58" },
};
DataTable dataTable = new DataTable();
// 获取列数
int columnCount = data.GetLength(1);
// 向 DataTable 添加列
for (int col = 0; col < columnCount; col++)
{
dataTable.Columns.Add(data[0, col]);
}
// 向 DataTable 添加行
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);
// 根据需要调整格式
// 调整字体
sheet.Rows[0].Style.Font.Size = 13;
sheet.Rows[0].Style.Font.IsBold = true;
sheet.Rows[0].Style.Font.FontName = "微软雅黑";
for (int j = 1; j < sheet.AllocatedRange.RowCount; j++)
{
sheet.Rows[j].Style.Font.Size = 12;
sheet.Rows[j].Style.Font.FontName = "微软雅黑";
}
// 自动调整列宽
for (int i = 1; i <= sheet.AllocatedRange.ColumnCount; i++)
{
sheet.AutoFitColumn(i);
}
// 将工作簿保存到文件
workbook.SaveToFile("output/DataTable导入Excel.xlsx", FileFormat.Version2016);
workbook.Dispose();
}
}
}
申请临时 License
如果您希望删除结果文档中的评估消息,或者摆脱功能限制,请该Email地址已收到反垃圾邮件插件保护。要显示它您需要在浏览器中启用JavaScript。获取有效期 30 天的临时许可证。