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


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




---


#### ② 写入Excel文件



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文件



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文件



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文件



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文件



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处理包。






你可能感兴趣的:(c#,excel,开发语言)