C#进阶-用于Excel处理的程序集

在.NET开发中,处理Excel文件是一项常见的任务,而有一些优秀的Excel处理包可以帮助开发人员轻松地进行Excel文件的读写、操作和生成。本文介绍了NPOI、EPPlus和Spire.XLS这三个常用的.NET Excel处理包,分别详细介绍了它们的特点、示例代码以及使用方法。通过对这些程序集的比较和示例代码的演示,读者可以更好地理解如何在C#开发中利用这些工具进行Excel文件的读取、写入和操作。这些程序集提供了丰富的功能和灵活的API,能够满足不同场景下对Excel文件处理的需求,有助于提高开发效率和减少工作量。

一、NPOI

NPOI是一个.NET平台上的开源库,用于读取和写入Microsoft Office格式的文件,包括Excel。NPOI提供了一套完整的API,使得开发人员可以方便地对Excel文件进行读写操作,而无需依赖Microsoft Office或其他付费组件。NPOI支持多种Excel格式,包括旧版的xls格式和新版的xlsx格式,同时也支持对Word和PowerPoint等Microsoft Office文件的操作。因其开源免费、功能强大且稳定性高的特点,NPOI被广泛应用于.NET平台的开发项目中。

1、示例代码

① 读取Excel文件

csharp 复制代码
using NPOI.SS.UserModel;
using NPOI.XSSF.UserModel;
using System;
using System.IO;

class Program
{
    static void Main(string[] args)
    {
        // 读取Excel文件
        using (FileStream fs = new FileStream("example.xlsx", FileMode.Open, FileAccess.Read))
        {
            IWorkbook workbook = new XSSFWorkbook(fs);
            ISheet sheet = workbook.GetSheetAt(0); // 获取第一个工作表

            // 遍历每一行
            for (int rowIdx = 0; rowIdx <= sheet.LastRowNum; rowIdx++)
            {
                IRow row = sheet.GetRow(rowIdx);
                if (row != null)
                {
                    // 遍历每一个单元格
                    for (int cellIdx = 0; cellIdx < row.LastCellNum; cellIdx++)
                    {
                        ICell cell = row.GetCell(cellIdx);
                        if (cell != null)
                        {
                            Console.Write(cell.ToString() + "\t");
                        }
                    }
                    Console.WriteLine();
                }
            }
        }
    }
}

该示例演示了如何使用NPOI库读取Excel文件中的数据。首先,通过FileStream打开Excel文件,然后创建XSSFWorkbook对象表示整个工作簿,通过GetSheetAt(0)获取第一个工作表。接下来,通过遍历每一行和每一个单元格,将单元格中的内容打印出来。


② 写入Excel文件

csharp 复制代码
using NPOI.SS.UserModel;
using NPOI.XSSF.UserModel;
using System.IO;

class Program
{
    static void Main(string[] args)
    {
        // 创建一个工作簿
        IWorkbook workbook = new XSSFWorkbook();

        // 创建一个工作表
        ISheet sheet = workbook.CreateSheet("Sheet1");

        // 创建行和单元格,并设置单元格的值
        IRow row = sheet.CreateRow(0);
        row.CreateCell(0).SetCellValue("Hello");
        row.CreateCell(1).SetCellValue("World");

        // 保存Excel文件
        using (FileStream fs = new FileStream("example.xlsx", FileMode.Create))
        {
            workbook.Write(fs);
        }
    }
}

该示例展示了如何使用NPOI库创建一个Excel文件并写入数据。首先,创建XSSFWorkbook对象表示整个工作簿,然后通过CreateSheet("Sheet1")创建一个名为"Sheet1"的工作表。接着,创建行和单元格,并通过SetCellValue方法设置单元格的值为"Hello"和"World"。最后,通过FileStream将工作簿写入到文件中。


二、EPPlus

EPPlus是一个.NET库,用于创建、操作和读写Excel 2007/2010/2013/2016文件,基于Open XML标准。下面详细解释示例代码中的读取和写入Excel文件的过程,并提供更多代码示例和详解。

1、示例代码

① 读取Excel文件

csharp 复制代码
using OfficeOpenXml;
using System;
using System.IO;

class Program
{
    static void Main(string[] args)
    {
        FileInfo excelFile = new FileInfo("example.xlsx");
        using (ExcelPackage excelPackage = new ExcelPackage(excelFile))
        {
            ExcelWorksheet worksheet = excelPackage.Workbook.Worksheets[0]; // 获取第一个工作表

            int rowCount = worksheet.Dimension.Rows;
            int colCount = worksheet.Dimension.Columns;

            // 遍历每一行和每一个单元格
            for (int row = 1; row <= rowCount; row++)
            {
                for (int col = 1; col <= colCount; col++)
                {
                    Console.Write(worksheet.Cells[row, col].Value.ToString() + "\t");
                }
                Console.WriteLine();
            }
        }
    }
}

在读取Excel文件的示例代码中,我们首先通过FileInfo类创建了一个表示要读取的Excel文件的实例。然后,我们使用ExcelPackage类的构造函数打开了这个Excel文件,并创建了一个ExcelPackage对象,该对象表示整个Excel文件。接下来,我们通过Workbook属性获取了Excel文件的工作簿(workbook),再使用Worksheets属性获取了第一个工作表(worksheet)。通过Dimension属性,我们获取了工作表的行数和列数。最后,我们使用两层循环遍历了每一行和每一个单元格,并通过Cells属性获取单元格对象,并输出了单元格的值。


② 写入Excel文件

csharp 复制代码
using OfficeOpenXml;
using System;
using System.IO;

class Program
{
    static void Main(string[] args)
    {
        FileInfo excelFile = new FileInfo("example.xlsx");
        using (ExcelPackage excelPackage = new ExcelPackage())
        {
            ExcelWorksheet worksheet = excelPackage.Workbook.Worksheets.Add("Sheet1");

            worksheet.Cells["A1"].Value = "Hello";
            worksheet.Cells["B1"].Value = "World";

            excelPackage.SaveAs(excelFile);
        }
    }
}

在写入Excel文件的示例代码中,我们首先创建了一个FileInfo对象来指定要保存的Excel文件的路径。然后,我们创建了一个空的ExcelPackage对象,表示一个新的Excel文件。通过Workbook属性,我们创建了一个工作簿,并使用Worksheets属性添加了一个名为"Sheet1"的工作表。然后,我们使用Cells属性来设置单元格的值,例如"A1"单元格的值设置为"Hello","B1"单元格的值设置为"World"。最后,我们调用SaveAs方法将Excel文件保存到指定路径。


三、Spire.XLS

Spire.XLS是一个专业的.NET Excel组件,支持读写、操作和生成Excel文件,提供了丰富的API和功能。与其他Excel组件相比,Spire.XLS具有性能优越、易于使用和丰富的特性等优势。

1、示例代码

① 读取Excel文件

csharp 复制代码
using Spire.Xls;
using System;

class Program
{
    static void Main(string[] args)
    {
        Workbook workbook = new Workbook();
        workbook.LoadFromFile("example.xlsx");

        Worksheet sheet = workbook.Worksheets[0]; // 获取第一个工作表

        int rowCount = sheet.Rows.Length;
        int colCount = sheet.Columns.Length;

        for (int row = 1; row <= rowCount; row++)
        {
            for (int col = 1; col <= colCount; col++)
            {
                Console.Write(sheet[row, col].Text + "\t");
            }
            Console.WriteLine();
        }
    }
}

以上示例代码演示了如何使用Spire.XLS读取Excel文件。首先,我们创建了一个Workbook对象,并通过LoadFromFile方法加载了名为"example.xlsx"的Excel文件。然后,我们获取了第一个工作表,并分别获取了行数和列数。接着,我们通过两层循环遍历每个单元格,并输出其文本值。

② 写入Excel文件

csharp 复制代码
using Spire.Xls;

class Program
{
    static void Main(string[] args)
    {
        Workbook workbook = new Workbook();
        Worksheet sheet = workbook.Worksheets[0];

        sheet.Range["A1"].Text = "Hello";
        sheet.Range["B1"].Text = "World";

        workbook.SaveToFile("example.xlsx", ExcelVersion.Version2013);
    }
}

以上示例代码展示了如何使用Spire.XLS写入Excel文件。首先,我们创建了一个Workbook对象,并获取了第一个工作表。然后,我们分别在"A1"和"B1"单元格中写入了"Hello"和"World"。最后,我们通过SaveToFile方法将工作簿保存为名为"example.xlsx"的Excel文件,指定保存的Excel版本为2013。


四、Excel处理的程序集总结

除了上述提到的包之外,还有其他一些.NET平台上的Excel处理包,如GemBox.Spreadsheet等,它们也提供了丰富的功能来处理Excel文件。这些示例代码展示了如何使用这些常用的.NET Excel处理包来读取和写入Excel文件。希望这可以帮助您更好地理解它们的用法。

下表列出了几种常见的.NET平台上的Excel处理包及其主要特点的对比:

包名称 支持的格式 主要功能 是否开源 许可证
NPOI xls, xlsx 读写Excel文件、操作单元格 Apache License
EPPlus xlsx 读写Excel文件、操作单元格 GNU GPL v2
Spire.XLS xls, xlsx, csv, pdf 读写Excel文件、操作单元格 商业许可证
GemBox.Spreadsheet xls, xlsx, csv, html 读写Excel文件、操作单元格 商业许可证

以上是对NPOI、EPPlus、Spire.XLS和GemBox.Spreadsheet几种常见Excel处理包的简要比较。这些包各有优缺点,开发人员可以根据项目需求和个人偏好选择合适的Excel处理包。

相关推荐
bin915323 分钟前
【EXCEL数据处理】000017 案例 Match和Index函数。
excel
shandianchengzi3 小时前
【记录】Excel|Excel 打印成 PDF 页数太多怎么办
pdf·excel
bin91536 小时前
【EXCEL数据处理】000010 案列 EXCEL文本型和常规型转换。使用的软件是微软的Excel操作的。处理数据的目的是让数据更直观的显示出来,方便查看。
大数据·数据库·信息可视化·数据挖掘·数据分析·excel·数据可视化
新手unity自用笔记12 小时前
项目-坦克大战学习-子弹的移动与销毁
笔记·学习·c#
qinzechen13 小时前
分享几个做题网站------学习网------工具网;
java·c语言·c++·python·c#
一个散步者的梦13 小时前
Excel常用函数
excel
yufei-coder16 小时前
C# Windows 窗体开发基础
vscode·microsoft·c#·visual studio
dangoxiba16 小时前
[Unity Demo]从零开始制作空洞骑士Hollow Knight第十三集:制作小骑士的接触地刺复活机制以及完善地图的可交互对象
游戏·unity·visualstudio·c#·游戏引擎
AitTech16 小时前
深入理解C#中的TimeSpan结构体:创建、访问、计算与格式化
开发语言·数据库·c#
hiyo58520 小时前
C#中虚函数和抽象函数的概念
开发语言·c#