本文还有配套的精品资源,点击获取 menu-r.4af5f7ec.gif

简介:C#通过使用EPPlus和NPOI库来实现对Excel文件的读取、写入和修改。本文将指导如何创建和操作Excel文件,包括实例代码和处理复杂情况的提示。通过了解这些技术,开发者能轻松处理数据和生成报表,满足项目中的数据操作需求。

1. C#中操作Excel文件的需求与方法

在信息化高度发展的今天,企业对于数据的处理需求日益增长,而Excel作为最常用的电子表格处理软件,其文件格式广泛应用于商业数据的汇报、存储和分析中。因此,在C#这样的.NET编程环境下,能够高效地操作Excel文件成为了众多开发者必须掌握的技能。在这一章中,我们将首先分析在.NET环境中操作Excel的动机和应用场景,比如自动化报告生成、数据整合和导出、以及复杂的业务逻辑处理等。

随后,我们将探讨实现这些需求的技术路径,包括但不限于使用内置的COM互操作、第三方库(如EPPlus、NPOI等)以及最近兴起的开源库如ClosedXML。这些技术选择各自有其优缺点,例如COM互操作虽然功能全面,但依赖于客户端安装Office套件;第三方库则提供了更轻量级且易于维护的方案。在策略选择上,开发者需要根据项目的具体需求,比如性能要求、预算限制以及维护成本等因素,来决定采用哪种方式。

通过这一章节的内容,读者将对C#操作Excel文件的背景、动机以及实现路径有一个初步的认识,为后续章节深入学习和应用特定库奠定基础。

2. EPPlus库的安装与应用

EPPlus库是基于.NET平台开发的,用于操作Excel文件的高级库,提供了全面的API用于创建、读取、写入和修改Excel 2007及以上版本的.xlsx文件。它支持的功能包括创建和编辑工作表、单元格样式、公式、图表、数据验证和多种Excel文件格式。EPPlus库适用于在服务器端或客户端应用程序中,处理不需要Visual Basic宏的Excel文件,非常适合企业级应用。

2.1 EPPlus库的安装步骤

2.1.1 安装EPPlus包管理器

在.NET项目中使用EPPlus库之前,首先需要安装EPPlus包管理器。如果你使用的是Visual Studio,可以通过NuGet包管理器来安装。在解决方案资源管理器中,右键点击“引用”或“依赖项” -> “管理NuGet包” -> “浏览” -> 搜索“EPPlus” -> 选择合适版本并安装。以下是通过NuGet命令行安装EPPlus的示例代码:

Install-Package EPPlus

安装过程中,NuGet包管理器会自动下载并添加EPPlus库依赖到你的项目中,并配置好相应的引用。

2.1.2 配置EPPlus库使用环境

安装EPPlus后,需要配置环境以便于使用该库。主要的配置工作包括添加必要的using指令,以及设置项目以便于正确加载EPPlus所依赖的dll文件。以下是一个示例代码段,展示如何在C#文件中配置EPPlus库的引用:

using OfficeOpenXml; // 引入EPPlus的主命名空间

// 在程序入口或者模块初始化处调用初始化方法
ExcelPackage.LicenseContext = LicenseContext.NonCommercial;

在上述代码中, using OfficeOpenXml; 是必须的,因为它包含了操作Excel文件所需的类定义。 LicenseContext 属性用于指定库的使用许可上下文,可以设置为 Commercial NonCommercial ,取决于你的项目是否是商业用途。

2.2 EPPlus库的基本应用

2.2.1 创建Excel工作簿

使用EPPlus创建一个新的Excel工作簿非常简单。首先,你需要实例化一个 ExcelPackage 对象,然后你可以从这个对象中获取 ExcelWorkbook ExcelWorksheet 对象,用来操作Excel文件的工作簿和工作表。下面是一个创建简单工作簿的示例代码:

// 创建一个EPPlus包实例
using (var package = new ExcelPackage())
{
    // 创建一个新的工作簿
    var workbook = package.Workbook;
    // 添加一个新的工作表
    var worksheet = workbook.Worksheets.Add("Sheet1");

    // 设置工作表的行列数
    worksheet.Dimension.Rows = 20;
    worksheet.Dimension.Columns = 10;

    // 保存工作簿
    package.SaveAs(new FileInfo(@"C:\path\to\your\new\excel.xlsx"));
}

以上代码首先创建了一个 ExcelPackage 对象,然后通过这个对象创建了一个工作簿和工作表。同时设置了工作表的行列数,并且将工作簿保存到了指定的路径。

2.2.2 读取和写入数据

EPPlus库提供了多种方式来读取和写入数据。写入数据时,可以使用单元格索引方式直接赋值,或者使用范围对象进行批量赋值。以下是如何读取和写入数据的示例代码:

// 打开一个已存在的工作簿
using (var package = new ExcelPackage(new FileInfo(@"C:\path\to\your\existing\excel.xlsx")))
{
    var workbook = package.Workbook;
    var worksheet = workbook.Worksheets[0]; // 获取第一个工作表

    // 写入数据到A1单元格
    worksheet.Cells["A1"].Value = "Hello, EPPlus!";

    // 批量写入数据到A2到A10的范围
    var range = worksheet.Cells["A2:A10"];
    for (int i = 0; i < range.Rows.Count; i++)
    {
        range[i, 1].Value = $"Item {i+1}";
    }

    // 保存更改
    package.Save();
}

在这个代码块中,首先打开一个已存在的Excel文件,然后写入数据到指定的单元格,并且通过循环批量写入一组数据到指定的范围。最后保存对工作簿所做的更改。

2.2.3 单元格样式设置

EPPlus提供了丰富的单元格样式设置,你可以为单元格添加字体、边框、填充颜色、对齐方式以及单元格的数字和日期格式等。下面是一个设置单元格样式的示例代码:

// 设置单元格A1的样式
var cellStyle = worksheet.Cells["A1"].Style;
cellStyle.Font.Name = "Arial";
cellStyle.Font.Size = 14;
cellStyle.Fill.PatternType = ExcelFillStyle.Solid;
cellStyle.Fill.BackgroundColor.SetColor(System.Drawing.Color yellow);

// 设置A2:A10范围内的单元格样式
range.Style.Font.Bold = true;
range.Style.Fill.PatternType = ExcelFillStyle.LightUp;
range.Style.Fill.BackgroundColor.SetColor(System.Drawing.Color Green);

// 保存工作簿
package.Save();

在上面的示例中,我们定义了单元格A1的字体样式、大小和背景颜色。同时,我们还为A2到A10范围内的所有单元格添加了粗体字和绿色的背景。最后保存了对工作簿所做的所有更改。

2.3 EPPlus库的高级应用

2.3.1 公式和图表的创建与使用

EPPlus支持在Excel文件中插入公式和创建图表。这为开发者提供了在C#代码中实现复杂数据处理和数据可视化的能力。

公式的使用

下面是一个向工作表中插入公式的示例代码:

// 在A11单元格插入一个简单的公式 =A1+A2
worksheet.Cells["A11"].Formula = "=A1+A2";

// 在B11单元格插入一个引用到另一个工作表的公式
worksheet.Cells["B11"].Formula = "=Sheet2!A11";
图表的创建

接下来是创建一个图表的示例代码:

// 创建一个柱状图
var chart = worksheet.Drawings.AddChart("MyBarChart", eChartType.BarClustered);
chart.SetSize(600, 300); // 设置图表大小
chart.SetPosition(1, 0, 3, 0); // 设置图表位置

// 设置图表数据源
var chartRange = worksheet.Cells["A2:A10"];
chart.DataSource = chartRange;
chart.Series.Add(worksheet.Cells["B2:B10"], chartRange);

// 设置图表标题和轴标签
chart.Title.Text = "Bar Chart Example";
chart.XAxis.Title.Text = "X Axis";
chart.YAxis.Title.Text = "Y Axis";

// 保存工作簿
package.Save();

在这段代码中,我们创建了一个柱状图,并将其放置在工作表中。图表的数据源是从A2到A10的范围,同时我们添加了一个数据系列,这里使用了B2到B10的值作为系列的数据。最后,我们设置图表的标题和轴标签,然后保存了工作簿。

2.3.2 高级格式和条件格式的实现

EPPlus库支持对单元格进行高级格式设置,包括条件格式化。这可以用来根据单元格中的值显示不同的颜色或样式,从而为数据添加可视化特性。

高级格式设置

高级格式设置可以用于单元格背景的渐变色效果,下面是一个示例代码:

// 获取A1单元格的样式对象
var cellStyle = worksheet.Cells["A1"].Style;

// 设置单元格背景颜色为渐变效果
var gradient = cellStyle.Fill.Gradient;
gradient.Type = ExcelFillGradientType.Linear;
gradient.LeftColor.SetColor(System.Drawing.Color.LimeGreen);
gradient.RightColor.SetColor(System.Drawing.Color.DarkGreen);

// 保存工作簿
package.Save();

在这段代码中,我们对A1单元格的填充颜色进行了设置,定义了一个从浅绿到深绿的线性渐变效果。

条件格式化

条件格式化可以根据单元格的值来改变单元格的格式,下面是使用条件格式化的一个示例:

// 对A2:A10范围内的单元格应用条件格式化
var range = worksheet.Cells["A2:A10"];
var conditionalFormat = range.ConditionalFormats.Add(ExcelConditionalFormatType.CellValue);
conditionalFormat.Formula = "10";

// 设置条件格式的颜色
conditionalFormat.Style.Fill.PatternType = ExcelFillStyle.Solid;
conditionalFormat.Style.Fill.BackgroundColor.Color = System.Drawing.Color.Red;

// 保存工作簿
package.Save();

在这个示例中,我们为A2到A10范围内的单元格添加了一个条件格式化规则,当单元格中的值等于10时,该单元格背景色会变为红色。

在这一章节中,我们了解了如何安装EPPlus库以及如何使用其进行基本和高级操作,这为在.NET应用程序中处理Excel文件提供了坚实的基础。通过上述示例和解释,读者应该可以开始着手在自己的项目中实现类似的功能,并进一步探索EPPlus库的更多高级特性。

3. NPOI库的安装与应用

在处理Excel文件方面,C#开发者常常会面临多种库的选择。NPOI是C#操作Excel的另一种强大库,尤其是在处理旧版本的Excel文件时,它提供了出色的兼容性。本章将探讨NPOI库的安装步骤、基本应用和高级应用,同时,将NPOI与EPPlus进行对比,展示各自在不同场景下的优势和局限。

3.1 NPOI库的安装步骤

3.1.1 安装NPOI NuGet包

要在C#项目中使用NPOI,首先需要安装对应的NuGet包。在Visual Studio中,可以通过NuGet包管理器来安装,也可以通过NuGet命令行来进行安装。以下是通过NuGet包管理器的安装步骤:

  1. 打开Visual Studio。
  2. 在解决方案资源管理器中,右键点击你的项目。
  3. 选择“管理NuGet包”。
  4. 切换到“浏览”标签页。
  5. 在搜索框中输入“NPOI”,然后按下回车。
  6. 在搜索结果中找到NPOI的官方包,选择适合你项目的版本。
  7. 点击“安装”按钮,等待安装完成。

使用NuGet命令行安装NPOI的命令如下:

Install-Package NPOI

此命令会将NPOI库添加到你的项目中,并确保所有必要的依赖项也都被安装。

3.1.2 配置NPOI使用环境

安装完NPOI后,需要对项目进行一些配置以便正常使用。首先,确保你的项目引用了NPOI的DLL文件。在项目文件(.csproj)中,你会找到类似下面的代码行:

<ItemGroup>
    <Reference Include="NPOI" />
</ItemGroup>

这意味着项目已经配置好了NPOI的引用。此外,还需要添加相应的using指令到你的C#文件中:

using NPOI.SS.UserModel;
using NPOI.HSSF.UserModel;
using NPOI.XSSF.UserModel;

这些指令允许你在代码中访问NPOI提供的类和方法,例如用于创建工作簿和工作表的方法。配置完成后,你就可以开始编写代码来操作Excel文件了。

3.2 NPOI库的基本应用

3.2.1 使用NPOI操作Excel 97-2003格式文件

NPOI库通过其HSSF(Horrible Spreadsheet Format)组件支持Excel 97-2003格式(.xls)的文件操作。以下是创建和操作Excel 97-2003格式文件的基本步骤:

  1. 创建一个工作簿实例:
IWorkbook workbook = new HSSFWorkbook();
  1. 添加一个工作表:
ISheet sheet = workbook.CreateSheet("Example Sheet");
  1. 向工作表中添加行和单元格:
IRow row = sheet.CreateRow(0);
ICell cell = row.CreateCell(0);
cell.SetCellValue(123);
  1. 最后,将工作簿写入到文件:
using (FileStream fileOut = new FileStream("example.xls", FileMode.Create, FileAccess.Write)) {
    workbook.Write(fileOut);
}

以上代码展示了如何创建一个具有单个工作表、单行和单列,以及一个单元格中包含数值的Excel文件。

3.2.2 使用NPOI操作Excel 2007+格式文件

NPOI通过XSSF组件支持Excel 2007及更新版本格式(.xlsx)的文件。以下是创建和操作Excel 2007+格式文件的基本步骤:

  1. 创建一个工作簿实例:
IWorkbook workbook = new XSSFWorkbook();
  1. 添加一个工作表:
ISheet sheet = workbook.CreateSheet("Example Sheet");
  1. 向工作表中添加行和单元格:
IRow row = sheet.CreateRow(0);
ICell cell = row.CreateCell(0);
cell.SetCellValue("Example Text");
  1. 写入工作簿到文件:
using (FileStream fileOut = new FileStream("example.xlsx", FileMode.Create, FileAccess.Write)) {
    workbook.Write(fileOut);
}

代码结构和操作Excel 97-2003格式文件类似,但是请注意,NPOI对于Excel 2007+格式的支持更为丰富,可以处理更为复杂的特性。

3.2.3 读写单元格数据

NPOI提供了丰富的方法来读写不同类型单元格的数据。以下是读写单元格数据的几个例子:

  • 写入不同类型的数据:
// 写入字符串
ICell stringCell = row.CreateCell(1);
stringCell.SetCellValue("Hello, NPOI!");

// 写入浮点数
ICell doubleCell = row.CreateCell(2);
doubleCell.SetCellValue(123.45);

// 写入布尔值
ICell boolCell = row.CreateCell(3);
boolCell.SetCellValue(true);
  • 读取单元格数据:
// 读取字符串
string value = cell.StringCellValue;

// 读取浮点数
double number = cell.NumericCellValue;

// 读取布尔值
bool isTrue = cell.BooleanCellValue;

请注意,NPOI可以处理更多的数据类型,如日期、时间等。对于更复杂的读取操作,例如读取特定格式的日期,可以使用NPOI提供的辅助方法来处理。

3.3 NPOI库的高级应用

3.3.1 NPOI在特定场景下的应用分析

NPOI在处理旧版Excel文件和特定场景方面表现出色,特别是在一些遗留系统中。例如,某些银行和金融机构依然使用基于Excel的报告系统,且这些报告往往基于较旧的Excel文件格式。在这些场景中,NPOI可以轻松地读取和解析旧格式的Excel文件,并进行必要的数据处理。

另一方面,NPOI可以实现复杂的Excel文件处理逻辑,例如合并单元格、调整行高列宽、设置单元格边框等。这些高级功能允许开发者创建更为动态和美观的Excel报告。

3.3.2 样式和格式的高级设置

NPOI提供了丰富的接口来设置单元格的样式和格式。这包括字体、颜色、边框、背景色以及单元格对齐方式等。这些高级设置对于创建专业的Excel文件至关重要。

例如,以下代码演示了如何设置单元格的字体和对齐方式:

// 获取工作表
ISheet sheet = workbook.GetSheet("Example Sheet");

// 获取行和单元格
IRow row = sheet.GetRow(0);
ICell cell = row.GetCell(0);

// 设置字体和颜色
IFont font = workbook.CreateFont();
font.SetBoldweight(FontBoldWeight.BOLD);
font.SetColor(IndexedColors.BLUE.Index);

// 设置单元格样式
ICellStyle style = workbook.CreateCellStyle();
style.SetFont(font);
style.Alignment = HorizontalAlignment.CENTER;  // 设置水平居中对齐

// 应用样式到单元格
cell.CellStyle = style;

3.3.3 图表和公式处理

在NPOI中,处理图表和公式也是可能的。虽然NPOI对于图表的支持不如EPPlus全面,但在许多基本场景下足以满足需求。

  • 创建一个简单的图表:
// 创建工作表
ISheet sheet = workbook.CreateSheet("Chart Sheet");

// 创建行和单元格
IRow row = sheet.CreateRow(0);
ICell cell = row.CreateCell(0);
cell.SetCellValue(100);

// 创建一个饼图
PieChart chart = new PieChart();
chart.SetTitle("Sample Pie Chart");
chart.SetFirstRow(1);  // 设置图表开始的行号
chart.SetLastRow(1);   // 设置图表结束的行号
chart.SetFirstCol(0);  // 设置图表开始的列号
chart.SetLastCol(0);   // 设置图表结束的列号

// 将图表添加到工作表
sheet.AddChart(chart);
  • 添加公式到单元格:
// 创建一个工作表
ISheet sheet = workbook.CreateSheet("Formula Sheet");

// 创建行和单元格
IRow row = sheet.CreateRow(0);
ICell cell = row.CreateCell(0);

// 在单元格中添加公式
cell.CellFormula = "SUM(A1:A5)";

请注意,尽管NPOI支持图表和公式,但其功能和灵活性可能不如专门针对Excel功能设计的库,如EPPlus。在选择库时需要考虑这些因素。

以上章节内容为你展示了NPOI库的安装步骤、基本应用和高级应用,以及它在处理旧版Excel文件和创建样式、图表和公式方面的应用和限制。理解这些内容将帮助你在使用NPOI库时作出更为明智的选择,并能高效地解决实际问题。

4. 使用EPPlus创建、读取和写入Excel文件的实践

在前面的章节中,我们介绍了EPPlus库的安装和一些基本使用方法。现在,让我们更深入地了解如何利用EPPlus进行实际操作,例如创建、读取和写入Excel文件。我们将从简单的创建Excel工作簿和工作表开始,然后学习如何读取和写入数据,最后掌握一些高级功能的应用。

4.1 创建Excel工作簿和工作表

4.1.1 简单的Excel创建工作流程

使用EPPlus创建一个新的Excel工作簿相对简单。首先,需要引入EPPlus的命名空间,并创建一个新的 FileInfo 对象,该对象指向我们想要创建的Excel文件。然后,我们使用 FileInfo 对象和版本号创建一个 ExcelPackage 实例。这将允许我们添加工作表并进行其他操作。

下面是一个简单的代码示例,演示了如何创建一个包含单个工作表的Excel文件:

using OfficeOpenXml;  // 引入EPPlus命名空间
using System.IO;

class Program
{
    static void Main(string[] args)
    {
        // 创建一个指向新Excel文件的FileInfo实例
        FileInfo newFile = new FileInfo(@"C:\path\to\your\new\excel.xlsx");
        using (ExcelPackage package = new ExcelPackage(newFile))
        {
            // 添加一个新的工作表,命名为"Sheet1"
            ExcelWorksheet worksheet = package.Workbook.Worksheets.Add("Sheet1");
            // 写入一些简单的数据
            worksheet.Cells["A1"].Value = "Hello";
            worksheet.Cells["A2"].Value = "World";
            // 保存Excel文件
            package.Save();
        }
    }
}

在这个示例中,我们首先创建了一个 FileInfo 对象,指定了新Excel文件的路径。接着,我们使用 ExcelPackage 类创建了一个新的Excel工作簿。通过调用 Worksheets.Add 方法,我们添加了一个名为”Sheet1”的新工作表。之后,我们向单元格写入了简单的文本数据,并保存了工作簿。

4.1.2 高级功能:工作表保护和模板应用

EPPlus还支持工作表的保护和模板的应用。工作表保护可以防止用户更改特定的单元格,这对于保持数据的完整性非常有用。而模板应用则是将已有格式的Excel文件作为模板,添加数据后输出新的Excel文件。

要保护工作表,可以使用以下代码:

// 继续上面的代码
worksheet.Protect("password"); // 设置密码保护工作表
worksheet.Unprotect("password"); // 在需要时解除保护

要使用模板,可以在创建 ExcelPackage 实例时指定一个模板文件:

using (ExcelPackage package = new ExcelPackage(new FileInfo(@"C:\path\to\your\template.xlsx")))
{
    // 通过模板创建新的工作簿逻辑...
}

以上两段代码展示了如何对工作表进行保护,并如何应用一个模板创建新的工作簿。通过这种方式,我们可以根据需要定制和重复使用Excel文件的结构和样式。

在本章接下来的部分,我们将深入探讨如何使用EPPlus进行数据的读取和写入操作,并展示一些高级技术,如数据筛选和排序、动态样式应用和数据验证等。这些功能将有助于我们实现更复杂的数据处理场景,并提升用户体验。

5. 使用NPOI创建、读取和写入Excel文件的实践

在本章中,我们将深入探讨如何使用NPOI库在实际项目中处理Excel文件。我们将从创建Excel文件和工作表开始,然后介绍如何读取和写入数据,以及如何利用NPOI处理不同版本的Excel文件。通过实践案例,我们将揭示NPOI库在创建、读取和写入Excel文件时的强大功能和灵活性。

5.1 创建Excel文件和工作表

NPOI库能够创建和操作多种版本的Excel文件。下面我们将详细说明如何使用NPOI创建Excel 97-2003和Excel 2007+文件。

5.1.1 利用NPOI创建Excel 97-2003文件

Excel 97-2003文件使用 .xls 格式,NPOI通过 HSSFWorkbook 类来处理这种格式的文件。以下是一个使用NPOI创建 .xls 文件的示例代码:

using System;
using System.IO;
using NPOI.HSSF.UserModel;
using NPOI.SS.UserModel;

public class CreateXlsFile
{
    public static void Main(string[] args)
    {
        var file = new FileInfo("Example.xls");
        using (var fs = new FileStream(file.FullName, FileMode.Create, FileAccess.Write))
        {
            ISheet sheet = new HSSFWorkbook().CreateSheet("Sheet1");
            IRow row = sheet.CreateRow(0);
            ICell cell = row.CreateCell(0);
            cell.SetCellValue("Hello World!");

            using (var sw = new StreamWriter(fs))
            {
                fs.Flush();
                sw.Write(fs);
            }
        }
    }
}

在上述代码中,我们首先创建了一个 HSSFWorkbook 对象,这是NPOI处理 .xls 文件的核心。我们接着创建了一个工作表( ISheet ),然后在该工作表中创建了一个行( IRow )和一个单元格( ICell ),并给单元格赋予了一个简单的字符串值。最后,我们通过 FileStream 将数据写入到文件中。

5.1.2 利用NPOI创建Excel 2007+文件

Excel 2007+版本的文件使用 .xlsx 格式,NPOI通过 XSSFWorkbook 类来处理这种格式的文件。下面是一个创建 .xlsx 文件的示例代码:

using System;
using System.IO;
using NPOI.XSSF.UserModel;
using NPOI.SS.UserModel;

public class CreateXlsxFile
{
    public static void Main(string[] args)
    {
        var file = new FileInfo("Example.xlsx");
        using (var fs = new FileStream(file.FullName, FileMode.Create, FileAccess.Write))
        {
            var workbook = new XSSFWorkbook();
            ISheet sheet = workbook.CreateSheet("Sheet1");
            IRow row = sheet.CreateRow(0);
            ICell cell = row.CreateCell(0);
            cell.SetCellValue("Hello World!");

            workbook.Write(fs);
        }
    }
}

与创建 .xls 文件类似,我们首先创建了一个 XSSFWorkbook 对象。然后,我们创建了一个工作表,添加了一个行和一个单元格,并给单元格赋予了值。与 .xls 文件不同的是,我们使用 workbook.Write(fs) 方法直接将数据写入到文件流中。

5.2 读取Excel文件中的数据

读取Excel文件是数据分析的重要步骤。NPOI提供了丰富的API来读取Excel文件中的数据,无论是单个单元格还是整个区域的数据,都可以轻松读取。

5.2.1 读取单元格和区域数据

下面的示例演示了如何使用NPOI读取Excel文件中的单元格和区域数据:

using System;
using System.IO;
using NPOI.SS.UserModel;
using NPOI.XSSF.UserModel;

public class ReadExcelData
{
    public static void Main(string[] args)
    {
        var file = new FileInfo("Example.xlsx");
        using (var fs = new FileStream(file.FullName, FileMode.Open, FileAccess.Read))
        {
            var workbook = new XSSFWorkbook(fs);
            var sheet = workbook.GetSheetAt(0);
            var row = sheet.GetRow(0);
            var cell = row.GetCell(0);
            Console.WriteLine(cell.StringCellValue);
        }
    }
}

在上述代码中,我们首先通过 FileStream 打开了一个 .xlsx 文件。然后,我们使用 XSSFWorkbook 的构造函数创建了一个工作簿对象,并从中获取了第一个工作表。接着,我们获取了工作表中的第一行和第一个单元格,并打印出了该单元格中的字符串值。

5.2.2 处理复杂数据结构的读取

处理复杂的数据结构,如合并单元格、多行或多列数据,NPOI同样提供了非常便捷的方法:

// 示例代码展示如何处理合并单元格和读取多行数据
var cell = row.GetCell(0, MissingCellPolicy.CREATE_NULL_AS_BLANK);
var mergeCells = sheet.MergedRegions;
foreach (var region in mergeCells)
{
    var firstRow = region.FirstRow;
    var lastRow = region.LastRow;
    var firstColumn = region.FirstColumn;
    var lastColumn = region.LastColumn;
    // 在这里可以按照你的需求来处理合并区域中的数据
}

这段代码首先演示了如何读取合并区域的单元格,接着遍历了所有合并区域,并获取了每个合并区域的起始和结束行号及列号,以便进一步处理这些数据。

5.3 写入数据到Excel文件

NPOI库同样支持将数据批量写入Excel文件,无论是简单的数据集合还是需要进行特定格式处理的数据。

5.3.1 将集合数据批量写入Excel

要将数据集合批量写入Excel文件,您可以使用以下步骤:

// 假设有一个集合数据
var rowsData = new List<string[]> { new[] { "Name", "Age", "Country" }, new[] { "Alice", "25", "USA" } };

// 使用NPOI写入数据到工作表
using (var fs = new FileStream("Example.xlsx", FileMode.Create, FileAccess.Write))
{
    var workbook = new XSSFWorkbook();
    var sheet = workbook.CreateSheet("DataSheet");

    int rowNum = 0;
    foreach (var rowData in rowsData)
    {
        var row = sheet.CreateRow(rowNum++);
        int colNum = 0;
        foreach (var val in rowData)
        {
            var cell = row.CreateCell(colNum++);
            cell.SetCellValue(val);
        }
    }

    workbook.Write(fs);
}

在这个例子中,我们创建了一个包含标题行和数据行的 rowsData 列表,并通过循环将每一行数据写入到一个新的Excel工作表中。

5.3.2 实现数据的动态格式化和样式应用

NPOI支持对单元格进行样式设置,以下是如何为单元格添加格式和样式的一个示例:

// 设置单元格的样式,如字体、边框、颜色、对齐方式等
ICellStyle style = workbook.CreateCellStyle();
style.SetFont(workbook.CreateFont());
style.GetFont().Boldweight = (short)FontBoldWeight.Bold;
style.BorderTop = BorderStyle.Thin;
style.BorderBottom = BorderStyle.Thin;
style.BorderLeft = BorderStyle.Thin;
style.BorderRight = BorderStyle.Thin;
style.Alignment = HorizontalAlignment.Center;
style.VerticalAlignment = VerticalAlignment.Center;

// 应用样式到单元格
var cell = row.GetCell(0);
cell.CellStyle = style;

在这个例子中,我们首先创建了一个 ICellStyle 对象,然后为其设置了不同的属性,如字体加粗、边框样式和对齐方式。最后,我们将这个样式应用到了一个单元格上。

通过上述实践案例,我们可以看到NPOI库在处理Excel文件时的强大功能。无论是创建新的Excel文件,读取和写入数据,还是处理复杂的数据结构,NPOI都提供了清晰、直观的API接口,使得操作Excel文件变得异常简便和高效。在下一章中,我们将进一步探讨在C#中如何使用EPPlus和NPOI库处理Excel文件中的高级特性,如样式、图表和公式。

本文还有配套的精品资源,点击获取 menu-r.4af5f7ec.gif

简介:C#通过使用EPPlus和NPOI库来实现对Excel文件的读取、写入和修改。本文将指导如何创建和操作Excel文件,包括实例代码和处理复杂情况的提示。通过了解这些技术,开发者能轻松处理数据和生成报表,满足项目中的数据操作需求。


本文还有配套的精品资源,点击获取
menu-r.4af5f7ec.gif

Logo

Agent 垂直技术社区,欢迎活跃、内容共建。

更多推荐