如何在 C# 中导入 Excel 文件
使用IronXL (一个无需安装 Microsoft Excel 即可读取 XLS、XLSX、CSV 文件的 .NET 库)在 C# 中导入 Excel 文件。 只需使用WorkBook.Load("file.xlsx")即可打开文件并使用类似sheet["A1"]直观语法访问单元格数据。
Microsoft Excel 是一款功能强大的电子表格软件,可帮助用户进行数据组织、展示和分析。 然而,在 C# 中以编程方式处理 Excel 可能会充满挑战,尤其是在处理不同的电子表格文件类型或部署服务器上未安装 Microsoft Office 时。 IronXL 软件库为 C# 应用程序提供了全面的解决方案,用于导入和读取 Excel 文件,支持包括XLSX 、XLS 和CSV 文件在内的各种格式。
IronXL是什么?为什么我应该使用它来进行Excel导入?
IronXL是一个 .NET Excel 库,它优先考虑易用性、准确性和速度。 它可以帮助您导入和读取 Excel 文档,并以闪电般的速度高效地创建和编辑 Excel 文件。 与需要 Microsoft Office Interop 的传统方法不同,IronXL 可以独立运行,无需依赖 MS Office Interop。 这意味着即使不安装 Excel,您也可以获得读取 Excel 文件的所有功能。 这使得 IronXL 成为开发人员在 C# 应用程序中导入和读取 Excel 文件的强大工具,无论您是构建ASP.NET Web 应用程序、桌面应用程序还是基于云的解决方案。
IronXL 可在 Windows、 Linux 、 macOS 、 Docker 、 Azure和AWS等所有平台上使用。 它兼容所有 .NET Framework 版本,并支持现代 .NET Core 和 .NET 5+ 环境。 IronXL 是一个功能强大的库,可以集成到控制台、桌面和 Web ASP.NET 应用程序以及Blazor 应用程序中。 它支持不同的工作簿格式,如 XLS 和 XLSX 文件、XSLT 和 XLSM、CSV 和 TSV,因此非常适合需要在电子表格文件类型之间进行转换的场景。
IronXL有哪些关键特性使其成为Excel导入的必备工具?
- 无需安装 Excel 即可打开、读取 Excel 文件并搜索不同电子表格格式(例如 XLS/CSV/TSV/XLSX 文件)中的数据 *将 Excel 工作表导出为多种格式,包括 XLS/XLSX/CSV/TSV/JSON 甚至HTML
- 使用密码对 XLSM/XLTX/XLSX 文件进行加密和解密,以增强安全性
- 将 Excel 工作表导入为
System.Data.DataSet和System.Data.DataTable对象,以实现无缝数据库集成 - 每次编辑工作表时,Excel 文件中的公式都会自动重新计算。
- 直观的单元格区域设置,使用
WorkSheet["A1:B10"]等简单语法即可选择区域 - 使用内置方法对单元格区域、列和行进行排序
- 全面的单元格样式设置,包括字体自定义、背景颜色、边框和对齐方式以及编号格式。
如何在C#中导入Excel工作簿?
开始导入Excel文件前我需要准备什么?
要在 C# 中使用 IronXL 读取 Excel 文件,请确保您的计算机上已安装以下组件:
Visual Studio - 这是用于开发 C# .NET 应用程序的官方 IDE。 Visual Studio 提供出色的
IntelliSense支持和调试工具,使处理 Excel 文件更加轻松。 您可以从微软网站下载并安装 Visual Studio。 社区版是免费的,足以满足大多数开发需求。- IronXL - 这是一个帮助你在 C# 中处理给定路径的 Excel 表格的库。 必须先将其安装到您的 C# 程序中才能使用。 IronXL 可以轻松地从NuGet 网站下载,也可以通过 Visual Studio 工具中的"管理 NuGet 程序包"界面直接安装。 如果您喜欢手动安装,也可以直接下载.NET Excel DLL文件。
对于生产环境部署,您需要应用许可证密钥来移除水印并启用全部功能。 可以使用试用版进行开发和测试。
我应该在代码中添加哪些命名空间?
安装好 Visual Studio 和 IronXL 后,引用 IronXL 程序集即可在源代码中使用 IronXL。 在新项目的文件顶部添加以下代码行,其中将使用 IronXL 功能:
using IronXL;using IronXL;此单一命名空间导入提供了对 Excel 操作所需所有核心功能的访问。 如果您正在使用 Excel 的特定功能(例如 图表或条件格式) ,则可能需要从 IronXL 库导入其他命名空间。
如何加载并打开Excel文件?
微软Excel电子表格也称为Excel工作簿。 每个工作簿包含多个工作表(也称为工作表),单个工作表包含按行和列组织的表格单元格及其各自的值。 要打开和读取 Excel 文件,请使用 IronXL 库中的WorkBook类和Load方法加载它。 代码如下
// Supported Excel spreadsheet formats for reading include: XLSX, XLS, CSV, and TSV
WorkBook workbook = WorkBook.Load("test.xlsx");
// You can also load from a stream
using (var stream = File.OpenRead("test.xlsx"))
{
WorkBook streamWorkbook = WorkBook.Load(stream);
}
// Or load CSV files with custom delimiters
WorkBook csvWorkbook = WorkBook.LoadCSV("data.csv", delimiter: ",");// Supported Excel spreadsheet formats for reading include: XLSX, XLS, CSV, and TSV
WorkBook workbook = WorkBook.Load("test.xlsx");
// You can also load from a stream
using (var stream = File.OpenRead("test.xlsx"))
{
WorkBook streamWorkbook = WorkBook.Load(stream);
}
// Or load CSV files with custom delimiters
WorkBook csvWorkbook = WorkBook.LoadCSV("data.csv", delimiter: ",");这将打开工作簿实例引用变量中的 Excel 文件。 由于一个工作簿可以包含多个工作表,因此您可以通过多种方式访问它们。 以下代码打开工作表实例变量中的第一个工作表:
// Get the first worksheet
WorkSheet sheet = workbook.WorkSheets.First();
// Or access by worksheet name
WorkSheet namedSheet = workbook.GetWorkSheet("Sheet1");
// Or by index (zero-based)
WorkSheet indexedSheet = workbook.WorkSheets[0];// Get the first worksheet
WorkSheet sheet = workbook.WorkSheets.First();
// Or access by worksheet name
WorkSheet namedSheet = workbook.GetWorkSheet("Sheet1");
// Or by index (zero-based)
WorkSheet indexedSheet = workbook.WorkSheets[0];这将打开 Excel 文件的第一个工作表,现在可以从该工作表中读取和写入 Excel 数据。 对于更高级的场景,您可能需要管理多个工作表或以编程方式创建新的电子表格。
打开 Excel 文件
! Excel电子表格,显示员工数据,包含姓名、职称和薪资三列,共包含5条员工记录,涵盖不同的职位和薪资。 包含员工信息的示例 Excel 文件,将使用 C# 导入。 数据包括姓名、职位(经理、总监、员工、总裁)和相应的薪资值。
导入后如何读取特定单元格的值?
Excel 文件导入后,即可读取数据。 使用 IronXL 在 C# 中读取 Excel 文件数据非常简单容易。 您只需以标准 Excel 表示法(例如"A1"、"B2"等)提及单元格引用编号,即可读取 Excel 单元格值。 该库提供了多种访问单元格值的方法,具体取决于预期的数据类型。
下面的代码检索具有引用编号 "C2" 的单元格的值:
// Select cells easily in Excel-notation and return the value
int cellValue = sheet["C2"].IntValue;
// Display the value
Console.WriteLine(cellValue);
// You can also access different data types
string textValue = sheet["A2"].StringValue;
decimal decimalValue = sheet["C2"].DecimalValue;
double doubleValue = sheet["C2"].DoubleValue;
DateTime dateValue = sheet["D2"].DateTimeValue;
bool boolValue = sheet["E2"].BoolValue;
// Check if cell is empty
bool isEmpty = sheet["F2"].IsEmpty;// Select cells easily in Excel-notation and return the value
int cellValue = sheet["C2"].IntValue;
// Display the value
Console.WriteLine(cellValue);
// You can also access different data types
string textValue = sheet["A2"].StringValue;
decimal decimalValue = sheet["C2"].DecimalValue;
double doubleValue = sheet["C2"].DoubleValue;
DateTime dateValue = sheet["D2"].DateTimeValue;
bool boolValue = sheet["E2"].BoolValue;
// Check if cell is empty
bool isEmpty = sheet["F2"].IsEmpty;译文如下:
! Microsoft Visual Studio 调试控制台窗口显示 Excel 文件读取操作的输出,包括文件路径和完成消息。 在 C# 中成功读取 Excel 文件后,调试控制台的输出如下。 程序已执行完毕,正在等待用户输入以关闭。
现在,让我们从打开的 Excel 文件中读取一系列单元格的数据。IronXL 可以使用熟悉的 Excel 表示法轻松处理单元格区域。 代码如下
// Read from a range of cells elegantly.
foreach (var cell in sheet["A2:A6"])
{
Console.WriteLine("Cell {0} has value '{1}'", cell.AddressString, cell.Text);
}
// You can also work with entire rows or columns
var row = sheet.GetRow(2); // Get row 3 (0-indexed)
foreach (var cell in row)
{
Console.WriteLine($"Row cell value: {cell.Value}");
}
// Or get a column
var column = sheet.GetColumn(0); // Get column A
foreach (var cell in column)
{
Console.WriteLine($"Column A value: {cell.Value}");
}// Read from a range of cells elegantly.
foreach (var cell in sheet["A2:A6"])
{
Console.WriteLine("Cell {0} has value '{1}'", cell.AddressString, cell.Text);
}
// You can also work with entire rows or columns
var row = sheet.GetRow(2); // Get row 3 (0-indexed)
foreach (var cell in row)
{
Console.WriteLine($"Row cell value: {cell.Value}");
}
// Or get a column
var column = sheet.GetColumn(0); // Get column A
foreach (var cell in column)
{
Console.WriteLine($"Column A value: {cell.Value}");
}代码非常简单、干净和清晰。 可以使用简单的语法引用单元格范围,如foreach循环所示: sheet["A2:A6"] ,并且可以遍历每个单元格以获取其值。 在这里,您将在控制台输出中看到 A 列第 2 行到第 6 行的名称:
! Microsoft Visual Studio 调试控制台显示读取 Excel 单元格 A2 到 A6 的输出,显示以下姓名:John、Sara、Peter、Mathew 和 Katherine 控制台输出显示使用 C# 成功读取包含姓名的 Excel 单元格区域 (A2:A6) 的过程。
有关读取和写入单元格值的更多详细信息,请查看这篇关于使用 C# 读取 Excel 文件的教程示例。 您还可以探索应用公式或使用命名区域等高级功能。
如何一次性导入整个工作表?
IronXL 可用于一次性读取 Excel 表格,使用行和列索引。 当您需要处理工作表中的所有数据,或者将Excel 转换为 CSV 或 JSON 等其他格式时,此功能尤其有用。 以下 IronXL 代码示例可帮助您将整个 Excel 文件数据以相同的格式输出到控制台:
WorkBook workbook = WorkBook.Load("test.xlsx");
WorkSheet sheet = workbook.WorkSheets.First();
// Traverse all rows of Excel WorkSheet
for (int i = 0; i < sheet.Rows.Count(); i++)
{
// Traverse all columns of specific Row
for (int j = 0; j < sheet.Columns.Count(); j++)
{
// Get the values
string val = sheet.Rows[i].Columns[j].Value.ToString();
Console.Write("{0}\t", val);
}
Console.WriteLine();
}
// Alternative method using LINQ for more efficient processing
var allData = sheet.Rows.SelectMany(row =>
row.Columns.Select(col => col.Value?.ToString() ?? "")).ToList();WorkBook workbook = WorkBook.Load("test.xlsx");
WorkSheet sheet = workbook.WorkSheets.First();
// Traverse all rows of Excel WorkSheet
for (int i = 0; i < sheet.Rows.Count(); i++)
{
// Traverse all columns of specific Row
for (int j = 0; j < sheet.Columns.Count(); j++)
{
// Get the values
string val = sheet.Rows[i].Columns[j].Value.ToString();
Console.Write("{0}\t", val);
}
Console.WriteLine();
}
// Alternative method using LINQ for more efficient processing
var allData = sheet.Rows.SelectMany(row =>
row.Columns.Select(col => col.Value?.ToString() ?? "")).ToList();对于较大的 Excel 文件,您可能需要考虑使用DataTable或DataSet对象,以获得更好的性能和更便捷的数据操作:
// Convert worksheet to DataTable for easier manipulation
DataTable dataTable = sheet.ToDataTable(true); // true = first row contains headers
// Process data using DataTable methods
foreach (DataRow row in dataTable.Rows)
{
foreach (var item in row.ItemArray)
{
Console.Write($"{item}\t");
}
Console.WriteLine();
}// Convert worksheet to DataTable for easier manipulation
DataTable dataTable = sheet.ToDataTable(true); // true = first row contains headers
// Process data using DataTable methods
foreach (DataRow row in dataTable.Rows)
{
foreach (var item in row.ItemArray)
{
Console.Write($"{item}\t");
}
Console.WriteLine();
}输出文件
! Microsoft Visual Studio 调试控制台显示员工数据表,该表包含姓名、职称和薪资列,显示从 Excel 文件读取的 5 条员工记录 控制台输出成功显示了从 Excel 文件导入的员工数据,格式正确,显示了姓名、职位和薪资信息。
.
导入Excel文件后,下一步该怎么做?
本文演示了如何在未安装 Microsoft Excel 的情况下,使用 C# 导入和读取 Excel 文件。 它涵盖了从 Excel 电子表格中读取数据的多种方法,从单个单元格到整个工作表。 IronXL 还可以帮助您在无需安装任何 Excel 的情况下,用 C#创建 Excel 文件。
成功导入 Excel 数据后,您可能想要探索其他功能:
*数据处理*:对单元格区域进行排序、应用筛选器或对行和列进行分组 数据验证:实施数据验证规则以确保数据完整性 格式设置:应用单元格样式、条件格式或数字格式 图表和可视化**:创建图表或添加图像以增强数据呈现效果 *安全性:对工作簿或单个工作表设置密码保护
IronXL 提供了一个一体化解决方案,用于以编程方式实现所有与 Microsoft Excel 文档相关的任务。 您可以执行公式计算、字符串或数字排序、修剪和追加、查找和替换、合并和取消合并单元格、保存文件等等。 您可以编辑单元格值,还可以设置单元格数据格式,并验证电子表格数据。 它还支持CSV 文件,并可帮助您无缝处理 Excel 数据。
对于企业应用程序,可以考虑探索各种平台的部署选项,包括Docker 容器、 Azure Functions和AWS Lambda 。
IronXL提供免费试用版,商业用途的授权只需购买 Lite 套餐,价格仅为$799起。 该库提供了优秀的文档、教程和代码示例,可帮助您快速上手在 C# 应用程序中使用 Excel 文件操作。
常见问题解答
如何在不使用 Interop 的情况下在 C# 中导入和读取 Excel 文件?
您可以使用 IronXL 库在 C# 中导入和读取 Excel 文件。只需使用 WorkBook.Load("file.xlsx") 加载 Excel 文件即可访问并处理数据,无需安装微软 Excel。
IronXL 库兼容哪些平台?
IronXL 兼容所有 .NET 框架,并可用于包括 Windows、Linux、MacOS、Docker、Azure 和 AWS 在内的多个平台。
我可以使用 IronXL 编辑 Excel 文件而无需安装 Microsoft Excel 吗?
是的,IronXL 允许您在 C# 中以编程方式创建和编辑 Excel 文件,而无需在系统上安装 Microsoft Excel。
IronXL 可以处理哪些 Excel 格式?
IronXL 支持各种 Excel 文件格式,如 XLS、XLSX、CSV、TSV 等,能够轻松导入和操作数据。
在 C# 项目中使用 IronXL 有哪些先决条件?
要使用 IronXL,请确保已安装 Visual Studio。您可以通过 NuGet 软件包管理器添加 IronXL 到您的项目,或通过下载并引用 .NET Excel DLL。
如何在 C# 中使用 IronXL 加载 Excel 工作簿?
要在 C# 中加载 Excel 工作簿,可以使用 IronXL 的 WorkBook.Load("path/to/file.xlsx") 方法,可以打开并操作工作簿。
是否可以使用 IronXL 处理 Excel 公式?
可以,IronXL 可以在每次编辑工作表时无缝地处理和重新计算 Excel 公式,确保数据计算的准确性。
如何使用 IronXL 从特定单元格读取数据?
要从特定单元格读取数据,可以使用 IronXL 语法如 sheet["B2"].StringValue 来获取 B2 单元格的值。
我可以使用 IronXL 遍历 Excel 表格的单元格范围吗?
是的,您可以使用 IronXL 遍历单元格范围,使用语法如 foreach (var cell in sheet["A1:C3"]) 来逐个处理每个单元格。
如何将 IronXL 集成到 ASP.NET 应用程序中?
可以通过 NuGet 添加库并在项目中引用,在 ASP.NET 应用程序中轻松集成 IronXL,实现 Excel 文件操作。






