变西瓜 发表于 2025-4-18 08:22:52

C#如何利用NPOI操作EXcel

HuangBin2025 发表于 2025-4-18 08:22:53


    引入 NPOI 库(通过 NuGet 安装)。
    创建工作簿和工作表。
    填充数据到单元格。
    应用样式(可选)。
    保存工作簿到文件。
    读取现有文件并修改内容。
    处理不同数据类型和格式。
    错误处理和资源管理。

FishC 发表于 2025-4-18 08:23:43

C#使用NPOI操作Excel简明教程


[*]安装NPOI
通过NuGet安装以下两个包:
NPOI
NPOI.OOXML(处理xlsx格式)

[*]创建Excel文件

using NPOI.HSSF.UserModel;// xls格式
using NPOI.XSSF.UserModel; // xlsx格式
using NPOI.SS.UserModel;

// 创建Workbook
IWorkbook workbook = new XSSFWorkbook(); // xlsx格式
// IWorkbook workbook = new HSSFWorkbook(); // xls格式

// 创建Sheet
ISheet sheet = workbook.CreateSheet("Sheet1");

// 创建行(第0行)
IRow row = sheet.CreateRow(0);

// 设置单元格值
row.CreateCell(0).SetCellValue("姓名");
row.CreateCell(1).SetCellValue("年龄");

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


[*]读取Excel文件

using (FileStream fs = new FileStream("test.xlsx", FileMode.Open))
{
    IWorkbook workbook = new XSSFWorkbook(fs);
    ISheet sheet = workbook.GetSheetAt(0);

    for (int i = 0; i <= sheet.LastRowNum; i++)
    {
      IRow row = sheet.GetRow(i);
      if (row == null) continue;
      
      for (int j = 0; j < row.LastCellNum; j++)
      {
            ICell cell = row.GetCell(j);
            string value = cell?.ToString() ?? "";
            Console.Write(value + "\t");
      }
      Console.WriteLine();
    }
}


[*]常用操作

[*]设置单元格格式:ICellStyle
[*]合并单元格:sheet.AddMergedRegion
[*]设置列宽:sheet.SetColumnWidth(0, 20 * 256)
[*]插入图片:workbook.AddPicture()



常见问题

[*]为什么生成的文件用Excel打不开?
→ 确保文件流正确关闭,检查文件扩展名(xls/xlsx)与Workbook类型匹配

[*]为什么数字显示为文本?
→ 使用cell.SetCellType(CellType.Numeric)设置单元格类型

[*]处理大数据量时内存不足?
→ 使用SXSSFWorkbook进行流式处理(xlsx专用)


官方文档:https://github.com/nissl-lab/npoi

以上回复来自 FishC AI 小助理,如未能正确解答您的问题,请继续追问。
页: [1]
查看完整版本: C#如何利用NPOI操作EXcel