C#操作NPOI实现Excel数据导入导出

1. 介绍

NPOI 是一款开源的 .NET 类库,用于读取和写入 Microsoft Office 格式的文件(如:Excel、Word、PowerPoint等)。通过使用 NPOI,可以在 C# 中轻松地进行 Excel 数据的导入和导出操作。

2. 安装 NPOI

在开始开发前,我们需要在项目中安装 NPOI。可以通过 NuGet 包管理器来安装 NPOI。

Install-Package NPOI

3. 导入 Excel 数据

首先,我们需要获取 Excel 文件,并读取其中的数据。以下是基本的导入 Excel 数据的步骤:

3.1 打开 Excel 文件

使用 NPOI 的工作簿(Workbook)类打开 Excel 文件:

using NPOI.HSSF.UserModel; // 适用于 Excel .xls 格式

using NPOI.XSSF.UserModel; // 适用于 Excel .xlsx 格式

string filePath = "path/to/excel/file.xlsx";

FileStream fileStream = new FileStream(filePath, FileMode.Open);

IWorkbook workbook = new XSSFWorkbook(fileStream); // 如果是 .xls 格式,使用 HSSFWorkbook

3.2 读取数据

通过工作簿对象可以获取到 Excel 文件中的工作表(Sheet)。接下来,我们可以遍历工作表的行和列,以读取其中的数据:

ISheet sheet = workbook.GetSheetAt(0); // 获取第一个工作表

for (int i = 0; i <= sheet.LastRowNum; i++)

{

IRow row = sheet.GetRow(i);

for (int j = 0; j < row.LastCellNum; j++)

{

ICell cell = row.GetCell(j);

string cellValue = cell.ToString();

// 处理单元格数据...

}

}

在读取单元格数据时,可以根据需要进行类型转换,例如将单元格数据解析为整数、日期等。

4. 导出 Excel 数据

导出 Excel 数据与导入类似,首先需要创建一个工作簿(Workbook),然后向其中添加工作表(Sheet)和数据。以下是基本的导出 Excel 数据的步骤:

4.1 创建工作簿和工作表

使用 NPOI 的工作簿(Workbook)类创建一个 Excel 文件,并添加工作表:

IWorkbook workbook = new XSSFWorkbook();

ISheet sheet = workbook.CreateSheet("Sheet1");

4.2 写入数据

向工作表中写入数据,可以使用 NPOI 的行(Row)和单元格(Cell)类来操作:

for (int i = 0; i < data.Count; i++)

{

IRow row = sheet.CreateRow(i);

for (int j = 0; j < data[i].Count; j++)

{

ICell cell = row.CreateCell(j);

cell.SetCellValue(data[i][j]);

// 设置单元格样式...

}

}

在写入数据时,可以根据需要设置单元格的样式,如字体、边框、背景色等。

5. 保存 Excel 文件

完成数据写入后,我们需要将工作簿保存为 Excel 文件:

string filePath = "path/to/save/excel/file.xlsx";

FileStream fileStream = new FileStream(filePath, FileMode.Create);

workbook.Write(fileStream);

fileStream.Dispose();

以上代码中,通过文件流将工作簿写入到指定的文件路径中。

6. 总结

NPOI 是一款功能强大的开源类库,可以方便地实现 C# 中的 Excel 数据导入和导出操作。在本文中,我们介绍了使用 NPOI 进行 Excel 数据导入和导出的基本步骤,并提供了相应的代码示例。希望本文能帮助你更好地理解和使用 NPOI。

免责声明:本文来自互联网,本站所有信息(包括但不限于文字、视频、音频、数据及图表),不保证该信息的准确性、真实性、完整性、有效性、及时性、原创性等,版权归属于原作者,如无意侵犯媒体或个人知识产权,请来电或致函告之,本站将在第一时间处理。猿码集站发布此文目的在于促进信息交流,此文观点与本站立场无关,不承担任何责任。

后端开发标签