|
发表于 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 小助理,如未能正确解答您的问题,请继续追问。 |
|