跳至页脚内容
使用 IRONXL

如何在 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、 LinuxmacOSDockerAzureAWS等所有平台上使用。 它兼容所有.NET Framework版本,并支持现代.NET Core和.NET 5+ 环境。 IronXL是一个功能强大的库,可以集成到控制台、桌面和 Web ASP.NET应用程序以及Blazor应用程序中。 它支持不同的工作簿格式,如 XLS 和 XLSX 文件、XSLT 和 XLSM、CSV 和 TSV,因此非常适合需要在电子表格文件类型之间进行转换的场景。

IronXL有哪些关键特性使其成为Excel导入的必备工具?

如何在C#中导入Excel工作簿?

开始导入Excel文件前我需要准备什么?

要在 C# 中使用IronXL读取 Excel 文件,请确保您的计算机上已安装以下组件:

  1. Visual Studio - 这是用于开发 C# .NET应用程序的官方 IDE。 Visual Studio 提供了出色的 IntelliSense 支持和调试工具,使处理 Excel 文件更加容易。 您可以从微软网站下载并安装 Visual Studio。 社区版是免费的,足以满足大多数开发需求。

  2. IronXL - 这是一个帮助你在 C# 中处理给定路径的 Excel 表格的库。 必须先将其安装到您的 C# 程序中才能使用。 IronXL可以轻松地从NuGet网站下载,也可以通过 Visual Studio 工具中的"管理NuGet程序包"界面直接安装。 如果您喜欢手动安装,也可以直接下载.NET Excel DLL文件。

对于生产环境部署,您需要应用许可证密钥来移除水印并启用全部功能。 可以使用试用版进行开发和测试。

我应该在代码中添加哪些命名空间?

安装好 Visual Studio 和IronXL后,引用IronXL程序集即可在源代码中使用IronXL 。 在新项目的文件顶部添加以下代码行,其中将使用 IronXL 功能:

using IronXL;
using IronXL;
$vbLabelText   $csharpLabel

此单一命名空间导入提供了对 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: ",");
$vbLabelText   $csharpLabel

这将打开工作簿实例引用变量中的 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];
$vbLabelText   $csharpLabel

这将打开 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;
$vbLabelText   $csharpLabel

译文如下:

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}");
}
$vbLabelText   $csharpLabel

代码非常简单、干净和清晰。 可以使用简单的语法引用单元格范围,如 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();
$vbLabelText   $csharpLabel

对于较大的 Excel 文件,您可能需要考虑使用DataTableDataSet对象,以获得更好的性能和更便捷的数据操作:

// 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();
}
$vbLabelText   $csharpLabel

输出文件

Microsoft Visual Studio 调试控制台显示员工数据表,该表包含姓名、职称和薪资列,显示了从 Excel 文件读取的 5 条员工记录 控制台输出成功显示了从 Excel 文件导入的员工数据,格式正确,显示了姓名、职位和薪资信息。

.

导入Excel文件后,下一步该怎么做?

本文演示了如何在未安装 Microsoft Excel 的情况下,使用 C# 导入和读取 Excel 文件。 它涵盖了从 Excel 电子表格中读取数据的多种方法,从单个单元格到整个工作表。 IronXL还可以帮助您在无需安装任何 Excel 的情况下,用 C#创建 Excel 文件

成功导入 Excel 数据后,您可能想要探索其他功能:

*数据处理*对单元格区域进行排序应用筛选器对行和列进行分组 数据验证:实施数据验证规则以确保数据完整性 格式设置:应用单元格样式条件格式数字格式 图表和可视化**:创建图表添加图像以增强数据呈现效果 *安全性:对工作簿或单个工作表设置密码保护

IronXL 提供了一个一体化解决方案,用于以编程方式实现所有与 Microsoft Excel 文档相关的任务。 您可以执行公式计算、字符串或数字排序、修剪和追加、查找和替换、合并和取消合并单元格、保存文件等等。 您可以编辑单元格值,还可以设置单元格数据格式,并验证电子表格数据。 它还支持CSV 文件,并可帮助您无缝处理 Excel 数据。

对于企业应用程序,可以考虑探索各种平台的部署选项,包括Docker 容器Azure FunctionsAWS Lambda

IronXL提供免费试用,其 Lite 套餐可授权用于商业用途,价格仅为 $799 起。 该库提供了优秀的文档教程代码示例,可帮助您快速上手在 C# 应用程序中使用 Excel 文件操作。

常见问题解答

如何在不使用 Interop 的情况下在 C# 中导入和读取 Excel 文件?

您可以使用 IronXL 库在 C# 中导入和读取 Excel 文件。只需使用 WorkBook.Load("file.xlsx") 加载 Excel 文件即可访问并处理数据,无需安装微软 Excel。

IronXL 库兼容哪些平台?

IronXL 兼容所有 .NET Framework,并可用于包括 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 文件操作。

Curtis Chau
技术作家

Curtis Chau 拥有卡尔顿大学的计算机科学学士学位,专注于前端开发,精通 Node.js、TypeScript、JavaScript 和 React。他热衷于打造直观且美观的用户界面,喜欢使用现代框架并创建结构良好、视觉吸引力强的手册。

除了开发之外,Curtis 对物联网 (IoT) 有浓厚的兴趣,探索将硬件和软件集成的新方法。在空闲时间,他喜欢玩游戏和构建 Discord 机器人,将他对技术的热爱与创造力相结合。

Iron Support Team

We're online 24 hours, 5 days a week.
Chat
Email
Call Me