跳至页脚内容
使用 IRONXL

如何在 C# 中处理 Excel 文件

在编程语言中处理Microsoft Excel文件已成为当今现代编程范式中的重要需求。 Excel生成被用于自动化、数据分析、衡量生产力、报告等。IronXL来自Iron Software,是一个强大的C#库,允许开发人员在不需要安装Microsoft Excel的情况下,在任何应用程序中(如Web服务、控制台、桌面等)读取、写入和操作Excel文档。这使其对于需要高效有效处理Excel数据的应用程序来说,是一个极好的选择。 在本文中,我们将探讨如何使用IronXL在C#中处理Excel文件。

如何在C#中处理Excel工作簿

  1. 创建一个Visual Studio项目并添加IronXL NuGet包。
  2. 创建一个不使用Interop的Excel文件。
  3. 使用IronXL为Excel文件添加样式。
  4. 从Excel中读取值并计算。
  5. 将Excel转换为HTML以用于网络使用。

介绍IronXL库

IronXL是一个适用于.NET的强大库,可以简化Excel文件的处理。 IronXL是一个强大的.NET库,专为轻松创建、读取和编辑Excel文件而设计。 它拥有直观的API,简化了Excel文档的处理,支持多种格式,如XLS、XLSX和CSV。这种多功能性允许轻松操作单元格值、公式和格式。 IronXL优化了性能,能够高效处理大型文件和复杂的数据操作,同时确保高效的内存使用。 其跨平台兼容性增强了其实用性,使IronXL成为不同操作系统开发人员的宝贵工具。 以下是其一些关键特性和优势:

关键特性

  1. 导入和导出:

    • 导入数据:支持XLS、XLSX、CSV和TSV格式。
    • 导出数据:可以将工作表导出为XLS、XLSX、CSV、TSV和JSON格式。
  2. 数据操作:

    • System.Data集成:以System.Data.DataSetSystem.Data.DataTable对象的形式处理电子表格。
    • 公式:支持Excel公式,在每次编辑表格时重新计算。
  3. 样式和格式

    • 单元格样式:自定义字体、大小、背景模式、边框、对齐和数字格式。
    • 范围:使用WorkSheet["A1:B10"]语法直观地设置范围。
  4. 安全

    • 加密:使用密码加密和解密XLSX、XLSM和XLTX文件。
  5. 跨平台兼容性
    • 可与.NET Framework、.NET Core、.NET Standard和Azure联合使用。
    • 兼容Windows、macOS、Linux、Docker、Azure和AWS。

好处

  1. 无需Microsoft Office:IronXL不需要安装Microsoft Office,使其轻量且易于部署。
  2. 易于使用:API直观且易于使用,允许开发人员快速将Excel功能集成到其应用程序中。
  3. 性能:IronXL进行了性能优化,确保对大型Excel文件进行快速高效处理。
  4. 多功能性:适用于广泛的应用,包括Web、桌面和基于云的解决方案。
  5. 全面的文档:提供详尽的文档及示例,使开发人员更容易入门并找到常见问题的解决方案。

开始

要在.NET项目中使用IronXL,您需确保开发环境满足以下先决条件:

前提条件

  1. .NET Framework:IronXL支持.NET Framework 4.5和更高版本的.NET技术。
  2. .NET Core和.NET Standard:兼容.NET Core 2、3、5、6、7、8和9。支持.NET Standard 2.0和2.1。
  3. 操作系统:可在Windows、macOS和Linux上使用。 兼容Docker、Azure和AWS环境。
  4. 无需Microsoft Office:IronXL不需要安装Microsoft Office或Excel Interop。
  5. 代码编辑器:任何视觉C#代码编辑器,如Visual Studio等。

安装

您可以通过Visual Studio中的NuGet包管理器或使用包管理器控制台使用以下命令安装IronXL:

dotnet add package IronXL.Excel --version 2024.8.5
dotnet add package IronXL.Excel --version 2024.8.5
SHELL

如何在C#中处理Excel工作簿

要开始处理Excel文件,首先,让我们开发一个Visual Studio项目并添加IronXL库。

第1步:创建一个Visual Studio项目并添加IronXL NuGet包

打开Microsoft Visual Studio,选择"创建新项目"选项来开始创建项目。

如何在C#中处理Excel文件:图1 - 新项目

选择您选择的项目模板,这里我们选择了控制台应用程序以简化操作。

如何在C#中处理Excel文件:图2 - 控制台应用程序

现在输入项目的名称和位置。

如何在C#中处理Excel文件:图3 - 项目配置

选择您偏好的.NET Framework版本。 我们选择了当前机器上可用的最新版本。

如何在C#中处理Excel文件:图4 - 目标框架

一旦单击创建按钮,项目将被创建并准备好使用。 打开解决方案资源管理器以检查项目文件。

如何在C#中处理Excel文件:图5 - 解决方案资源管理器

现在,让我们按上面所示从NuGet包管理器安装IronXL库。

步骤2:不使用Interop创建Excel文件

现在,让我们创建一个不使用Microsoft Interop库的Excel文件。

using IronXL;

namespace WorkingWithIronXL
{
    public class Program
    {
        public static void Main()
        {
            // Create new Excel WorkBook Object
            WorkBook workBook = WorkBook.Create();
            // Create WorkSheet
            WorkSheet workSheet = workBook.CreateWorkSheet("newXlDemo");
            // Add data in new worksheet
            workSheet["A1"].Value = "IronXL is the best Excel library";           
            // Save the Excel file as XLSX
            workBook.SaveAs("myIronXlDemo.xlsx");
        }
    }
}
using IronXL;

namespace WorkingWithIronXL
{
    public class Program
    {
        public static void Main()
        {
            // Create new Excel WorkBook Object
            WorkBook workBook = WorkBook.Create();
            // Create WorkSheet
            WorkSheet workSheet = workBook.CreateWorkSheet("newXlDemo");
            // Add data in new worksheet
            workSheet["A1"].Value = "IronXL is the best Excel library";           
            // Save the Excel file as XLSX
            workBook.SaveAs("myIronXlDemo.xlsx");
        }
    }
}
Imports IronXL

Namespace WorkingWithIronXL
	Public Class Program
		Public Shared Sub Main()
			' Create new Excel WorkBook Object
			Dim workBook As WorkBook = WorkBook.Create()
			' Create WorkSheet
			Dim workSheet As WorkSheet = workBook.CreateWorkSheet("newXlDemo")
			' Add data in new worksheet
			workSheet("A1").Value = "IronXL is the best Excel library"
			' Save the Excel file as XLSX
			workBook.SaveAs("myIronXlDemo.xlsx")
		End Sub
	End Class
End Namespace
$vbLabelText   $csharpLabel

代码解释

  1. 我们添加IronXL命名空间以开始使用该库。
  2. 然后我们用WorkBook.Create()创建一个Excel对象来创建XLSX文件。
  3. 然后调用CreateWorkSheet方法在工作簿内创建一个工作表。
  4. 使用workSheet["A1"].Value为单元格添加值。
  5. 然后使用workBook.SaveAs保存Excel文件,并提供文件名。

输出Excel文件

如何在C#中处理Excel文件:图6 - Excel输出

步骤3:使用IronXL为Excel文件添加样式

现在让我们看看如何为Excel单元格添加样式。

using IronXL;

namespace WorkingWithIronXL
{
    public class Program
    {
        public static void Main()
        {
            // Create a new workbook
            WorkBook workBook = WorkBook.Create(ExcelFileFormat.XLSX);
            // Create a new worksheet
            WorkSheet workSheet = workBook.CreateWorkSheet("StyledSheet");
            // Add multiple values to cells
            workSheet["A1"].Value = "This Styled Text with Awesome IronXL library";
            workSheet["A2"].Value = 999999;
            // Apply styles to cells
            workSheet["A1"].Style.Font.Bold = true;
            workSheet["A1"].Style.Font.Italic = true;
            workSheet["A1"].Style.Font.Height = 14;
            workSheet["A1"].Style.Font.Color = "#FF0000"; // Red color
            workSheet["A2"].Style.BottomBorder.Type = IronXL.Styles.BorderType.Double;
            workSheet["A2"].Style.BottomBorder.SetColor("#00FF00"); // Green color
            // Save the workbook
            workBook.SaveAs("myIronXlWriteDemo.xlsx");
        }
    }
}
using IronXL;

namespace WorkingWithIronXL
{
    public class Program
    {
        public static void Main()
        {
            // Create a new workbook
            WorkBook workBook = WorkBook.Create(ExcelFileFormat.XLSX);
            // Create a new worksheet
            WorkSheet workSheet = workBook.CreateWorkSheet("StyledSheet");
            // Add multiple values to cells
            workSheet["A1"].Value = "This Styled Text with Awesome IronXL library";
            workSheet["A2"].Value = 999999;
            // Apply styles to cells
            workSheet["A1"].Style.Font.Bold = true;
            workSheet["A1"].Style.Font.Italic = true;
            workSheet["A1"].Style.Font.Height = 14;
            workSheet["A1"].Style.Font.Color = "#FF0000"; // Red color
            workSheet["A2"].Style.BottomBorder.Type = IronXL.Styles.BorderType.Double;
            workSheet["A2"].Style.BottomBorder.SetColor("#00FF00"); // Green color
            // Save the workbook
            workBook.SaveAs("myIronXlWriteDemo.xlsx");
        }
    }
}
Imports IronXL

Namespace WorkingWithIronXL
	Public Class Program
		Public Shared Sub Main()
			' Create a new workbook
			Dim workBook As WorkBook = WorkBook.Create(ExcelFileFormat.XLSX)
			' Create a new worksheet
			Dim workSheet As WorkSheet = workBook.CreateWorkSheet("StyledSheet")
			' Add multiple values to cells
			workSheet("A1").Value = "This Styled Text with Awesome IronXL library"
			workSheet("A2").Value = 999999
			' Apply styles to cells
			workSheet("A1").Style.Font.Bold = True
			workSheet("A1").Style.Font.Italic = True
			workSheet("A1").Style.Font.Height = 14
			workSheet("A1").Style.Font.Color = "#FF0000" ' Red color
			workSheet("A2").Style.BottomBorder.Type = IronXL.Styles.BorderType.Double
			workSheet("A2").Style.BottomBorder.SetColor("#00FF00") ' Green color
			' Save the workbook
			workBook.SaveAs("myIronXlWriteDemo.xlsx")
		End Sub
	End Class
End Namespace
$vbLabelText   $csharpLabel

代码解释

  1. 使用WorkBook.Create创建一个Excel文件。
  2. 使用workBook.CreateWorkSheet创建一个工作表。
  3. 使用workSheet["A1"].Value为单元格赋值。
  4. 使用单元格上的属性如workSheet["A1"].Style.Font.Bold为每个单元格添加样式。
  5. 使用workBook.SaveAs保存工作簿。

输出Excel文件

如何在C#中处理Excel文件:图7 - 带样式的Excel输出

步骤4:从Excel中读取值并计算

现在我们已经看到如何创建Excel文件,让我们看看下面的代码,如何使用IronXL读取Excel文件并进行一些内存计算。

using IronXL;
using System;

namespace WorkingWithIronXL
{
    internal class IronXlDemo
    {
        public static void ReadData()
        {
            // Load the Excel worksheet
            WorkBook workBook = WorkBook.Load("sampleEmployeeData.xlsx");
            // Select the first worksheet
            WorkSheet workSheet = workBook.WorkSheets[0];
            // Read a specific cell value
            int cellValue = workSheet["A2"].IntValue;
            Console.WriteLine($"Value in A2: {cellValue}");
            // Read a range of cells
            foreach (var cell in workSheet["A1:H10"])
            {
                Console.Write($"{cell.Text}\t");
                if(cell.AddressString.Contains("H"))
                {
                    Console.WriteLine();
                }
            }
            // Calculate aggregate values
            decimal sum = workSheet["F2:F10"].Sum();
            Console.WriteLine($"Sum of F2:F10: {sum}");
        }
    }
}
using IronXL;
using System;

namespace WorkingWithIronXL
{
    internal class IronXlDemo
    {
        public static void ReadData()
        {
            // Load the Excel worksheet
            WorkBook workBook = WorkBook.Load("sampleEmployeeData.xlsx");
            // Select the first worksheet
            WorkSheet workSheet = workBook.WorkSheets[0];
            // Read a specific cell value
            int cellValue = workSheet["A2"].IntValue;
            Console.WriteLine($"Value in A2: {cellValue}");
            // Read a range of cells
            foreach (var cell in workSheet["A1:H10"])
            {
                Console.Write($"{cell.Text}\t");
                if(cell.AddressString.Contains("H"))
                {
                    Console.WriteLine();
                }
            }
            // Calculate aggregate values
            decimal sum = workSheet["F2:F10"].Sum();
            Console.WriteLine($"Sum of F2:F10: {sum}");
        }
    }
}
Imports Microsoft.VisualBasic
Imports IronXL
Imports System

Namespace WorkingWithIronXL
	Friend Class IronXlDemo
		Public Shared Sub ReadData()
			' Load the Excel worksheet
			Dim workBook As WorkBook = WorkBook.Load("sampleEmployeeData.xlsx")
			' Select the first worksheet
			Dim workSheet As WorkSheet = workBook.WorkSheets(0)
			' Read a specific cell value
			Dim cellValue As Integer = workSheet("A2").IntValue
			Console.WriteLine($"Value in A2: {cellValue}")
			' Read a range of cells
			For Each cell In workSheet("A1:H10")
				Console.Write($"{cell.Text}" & vbTab)
				If cell.AddressString.Contains("H") Then
					Console.WriteLine()
				End If
			Next cell
			' Calculate aggregate values
			Dim sum As Decimal = workSheet("F2:F10").Sum()
			Console.WriteLine($"Sum of F2:F10: {sum}")
		End Sub
	End Class
End Namespace
$vbLabelText   $csharpLabel

代码解释

  1. 我们使用WorkBook.Load将示例Excel文件加载到内存中。
  2. 访问工作簿中的第一个工作表。
  3. 读取特定单元格的值并使用Console.WriteLine显示。
  4. 遍历单元格范围并打印出每个值。 每次打印均在"H"列的结尾增加一行。
  5. 计算范围F2-F10内值的总和并打印出来。

输入Excel

如何在C#中处理Excel文件:图8 - Excel输入

Output

如何在C#中处理Excel文件:图9 - 控制台输出

步骤5:将Excel转换为HTML以用于网络使用

现在我们知道如何生成、读取和写入Excel文件,让我们看看如何将Excel转换为HTML以用于网络使用。

using IronXL;
using IronXL.Options;

namespace WorkingWithIronXL
{
    internal class IronXlDemo
    {
        public static void ConvertToHtml()
        {
            WorkBook workBook = WorkBook.Load("sampleEmployeeData.xlsx");
            var options = new HtmlExportOptions()
            {
                // Set row/column numbers visible in HTML document
                OutputRowNumbers = true,
                OutputColumnHeaders = true,
                // Set hidden rows/columns visible in HTML document
                OutputHiddenRows = true,
                OutputHiddenColumns = true,
                // Set leading spaces as non-breaking
                OutputLeadingSpacesAsNonBreaking = true
            };
            // Export workbook to the HTML file
            workBook.ExportToHtml("workBook.html", options);
        }
    }
}
using IronXL;
using IronXL.Options;

namespace WorkingWithIronXL
{
    internal class IronXlDemo
    {
        public static void ConvertToHtml()
        {
            WorkBook workBook = WorkBook.Load("sampleEmployeeData.xlsx");
            var options = new HtmlExportOptions()
            {
                // Set row/column numbers visible in HTML document
                OutputRowNumbers = true,
                OutputColumnHeaders = true,
                // Set hidden rows/columns visible in HTML document
                OutputHiddenRows = true,
                OutputHiddenColumns = true,
                // Set leading spaces as non-breaking
                OutputLeadingSpacesAsNonBreaking = true
            };
            // Export workbook to the HTML file
            workBook.ExportToHtml("workBook.html", options);
        }
    }
}
Imports IronXL
Imports IronXL.Options

Namespace WorkingWithIronXL
	Friend Class IronXlDemo
		Public Shared Sub ConvertToHtml()
			Dim workBook As WorkBook = WorkBook.Load("sampleEmployeeData.xlsx")
			Dim options = New HtmlExportOptions() With {
				.OutputRowNumbers = True,
				.OutputColumnHeaders = True,
				.OutputHiddenRows = True,
				.OutputHiddenColumns = True,
				.OutputLeadingSpacesAsNonBreaking = True
			}
			' Export workbook to the HTML file
			workBook.ExportToHtml("workBook.html", options)
		End Sub
	End Class
End Namespace
$vbLabelText   $csharpLabel

代码解释

  1. 使用Load方法加载Excel文件"sampleEmployeeData.xlsx"。
  2. 使用HtmlExportOptions设置转换为HTML的选项。
  3. 使用ExportToHtml方法将工作簿转换并保存为HTML文件。

Input

如何在C#中处理Excel文件:图10 - Web的Excel输入

Output

如何在C#中处理Excel文件:图11 - HTML输出

真实的使用案例

IronXL是一个用途广泛的.NET库,具有广泛的实际应用,包括:

1. 商业报告:

  • 自动生成定期报告,例如销售汇总、财务报表和绩效指标。
  • 创建自定义仪表板,从多个来源提取数据并以Excel格式呈现。

2. 数据分析:

  • 处理大型数据集以执行统计分析、数据清理和数据转换。
  • 将分析后的数据导出到Excel中进行进一步检查并与利益相关者共享。

3. 库存管理:

  • 通过创建和更新包含库存水平、供应商详信息和订货点的Excel表单来管理产品库存。
  • 生成库存报告以跟踪库存运动并识别趋势。

4. 客户关系管理(CRM):

  • 将CRM系统中的客户数据导出到Excel中以进行详细分析和报告。
  • 通过从Excel文件导入修改后的数据来更新CRM记录。

5. 教育机构:

  • 创建和维护学生成绩册、考勤记录和进度报告。
  • 为教师和学生生成考试结果和详细表现分析。

6. 金融服务:

  • 自动化创建财务模型、预算和Excel中的预测。
  • 汇总来自多个来源的财务数据以进行全面的财务报告。

7. 人力资源:

  • 管理员工数据,包括联系方式、工资信息和表现评估。
  • 生成有关HR指标的报告,如员工流动率、流失率和员工人口统计。

8. 项目管理:

  • 使用Excel表单跟踪项目时间线、里程碑和资源分配。
  • 直接在Excel中创建甘特图和其他项目管理工具。

9. 电子商务:

  • 从电子商务平台将订单详情、客户信息和销售数据导出到Excel。
  • 分析销售趋势、客户行为和产品表现。

10. 医疗保健:

  • 在Excel中管理患者记录、预约安排和治疗计划。
  • 分析医疗数据以识别模式并改善患者护理。

IronXL许可

IronXL是Iron Software的Iron Suite产品系列的一部分企业级库。 运行需要许可证。 用户可以通过此处使用他们的电子邮件ID下载试用许可证。 数据录入完毕后,许可证将发送到所提供的电子邮件地址。 此许可证需要放在代码的开头,在使用IronXL库之前,如下。

License.LicenseKey = "your Key Here";
License.LicenseKey = "your Key Here";
License.LicenseKey = "your Key Here"
$vbLabelText   $csharpLabel

结论

IronXL是一个强大的.NET库,用于创建、读取和编辑Excel文件,提供了直观的API简化Excel文档处理过程。 它支持广泛的Excel格式,包括XLS、XLSX和CSV,使其在各种使用场景中都非常灵活。 IronXL允许轻松操作单元格值、公式和格式,经过性能优化,能够高效处理大型文件和复杂操作。 其高效的内存管理确保了响应迅速的应用程序,其跨平台兼容性使其成为开发人员在不同操作系统上工作的有价值的工具。

常见问题解答

如何在没有安装 Microsoft Excel 的情况下在 C# 中操作 Excel 文件?

您可以使用 IronXL,这是一款来自 Iron Software 的 C# 库,用于读取、写入和操作 Excel 文档,而无需 Microsoft Excel。它支持多种格式,如 XLS、XLSX 和 CSV,并可用于如 Web 服务、桌面和控制台等应用。

在 C# 中设置一个 Visual Studio 项目以处理 Excel 涉及哪些步骤?

要在 C# 中设置一个处理 Excel 的 Visual Studio 项目,请通过 NuGet 包管理器安装 IronXL。在包管理器控制台中使用命令:dotnet add package IronXL.Excel --version 2024.8.5 将该库添加到您的项目。

我可以使用 C# 在 Excel 文件中进行计算吗?

是的,使用 IronXL,您可以在 Excel 文件中进行计算。该库支持 Excel 公式,允许您直接在 C# 应用程序中自动化计算。

我如何使用 C# 将 Excel 文件转换为 HTML?

IronXL 提供了 ExportToHtml 方法来将 Excel 文件转换为 HTML。此方法允许自定义选项以确保 HTML 输出符合您的要求。

在 C# 中使用 IronXL 操作 Excel 文件的好处是什么?

IronXL 提供易于使用的直观 API、针对大型 Excel 文件优化的性能以及各种应用的多功能性。其跨平台兼容性和全面的文档使其效用更上一层楼。

我可以使用 IronXL 将高级样式应用于 Excel 单元格吗?

可以,使用 IronXL,您可以将高级样式应用于 Excel 单元格,比如通过每个单元格的样式属性自定义字体、大小、颜色、边框和对齐方式。

IronXL 是否适合跨平台 Excel 文件操作?

是的,IronXL 被设计为跨平台的,兼容 Windows、macOS、Linux 以及 Docker、Azure 和 AWS 等环境,使其成为多种部署方案的理想选择。

我如何在 C# 中使用 IronXL 读取 Excel 文件中的单元格值?

使用 IronXL,您可以通过加载文件使用 WorkBook.Load,选择工作表,并根据地址访问特定的单元格值或范围来读取 Excel 文件中的单元格值。

是什么使 IronXL 成为处理 C# 中 Excel 文件的强大工具?

IronXL 因其对多种格式(XLS、XLSX、CSV)的支持、公式和样式能力、安全的加密以及在各种操作系统上高效处理大文件的能力而强大。

Curtis Chau
技术作家

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

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