EPPlus 和NPOI简单的Demo对比

在之前的文章中简单的使用了下NPOI,NPOI的基本使用, 相对来说,并没有EPPLus好用。
首先, EPPlus只用一个DLL,而不像NPOI引入多个dll,区分excel版本。
其次,EPPlus在为某个cell赋值时,不要先创建cell,这也方便了使用。而且NPOI判定cell是不是new,并不是通过里面是否有值而判定的。
最后,EPPlus更倾向面向对象编程。
以上仅个人观点,欢迎指正。

下面做了一个简单的Demo,分别使用EPPlus和NPOI插入一条数据,EPPlus用时272毫秒,NPOI用时499毫秒。
所以,就该Demo来看,少量数据EPPlus的性能也是略胜一筹的。

之后为了证明NPOI是否在处理大数据量的时候更胜一筹,又做了插入10000条数据的实验。第一次插入时, 确实NPOI在写入数据,有明显优势,可是后来更新数据时,很明显NPOI在读取数据又被拉开一大截。

所以在初始化文件很小时,后来一次性需要插入大量数据数据时,使用NPOI极佳。

以下是一个简单EPPlus的Demo:
Code:

using OfficeOpenXml;
using System;
using System.Collections.Generic;
using System.Diagnostics;
using System.IO;
using System.Linq;
using System.Text;
using Syst
  • 0
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
### 回答1: 您可以使用NPOI的Sheet.FreezePanes()方法来冻结行和列。例如,如果您想要冻结第一行和前两列,可以使用以下代码: sheet.CreateFreezePane(2, 1); 这将在第二列和第一行之间创建一个分隔条,使第一行和前两列保持固定。 ### 回答2: NPOI是一个用于操作Excel文件的开源库。在NPOI中,可以通过设置Sheet对象的冻结行和列的属性来冻结具体的行和列。 首先,打开一个已存在的Excel文件或创建一个新的Excel文件,然后创建一个Sheet对象。 要冻结行或列,可以使用Sheet对象的CreateFreezePane方法。该方法接受两个整数参数colSplit和rowSplit,这两个参数分别表示要冻结的列数和行数。 如果想要冻结前两列,可以将colSplit设置为2(从0开始计数),如果想要冻结前两行,可以将rowSplit设置为2(同样从0开始计数)。 以下是一个示例代码: ```c# using NPOI.XSSF.UserModel; using NPOI.SS.UserModel; // 创建一个新的Excel文件 XSSFWorkbook workbook = new XSSFWorkbook(); // 创建一个Sheet对象 ISheet sheet = workbook.CreateSheet("Sheet1"); // 冻结前两行 sheet.CreateFreezePane(0, 2); // 冻结前两列 sheet.CreateFreezePane(2, 0); // 保存Excel文件 using (FileStream stream = new FileStream("example.xlsx", FileMode.Create, FileAccess.Write)) { workbook.Write(stream); } ``` 在上面的示例中,创建了一个名为"Sheet1"的Sheet对象,然后分别通过调用CreateFreezePane方法来冻结前两行和前两列。最后将Excel文件保存到磁盘上。 通过设置对应的冻结行和列的参数,可以实现在Excel中冻结具体的行和列,使其在滚动时保持固定显示。 ### 回答3: NPOI是一个用于操作Microsoft Office格式文件的开源库,可以在C#和.NET平台上进行使用。如果需要在使用NPOI创建的Excel文件中冻结某些行或列,可以通过以下步骤进行操作: 1. 首先,需要创建一个工作表对象,在NPOI中使用HSSFSheet或XSSFSheet类来表示工作表。 2. 接下来,使用工作表对象的CreateFreezePane方法来冻结行和列。这个方法接受两个参数,第一个参数是要冻结的列数(从0开始计算),第二个参数是要冻结的行数(从0开始计算)。 3. 调用CreateFreezePane方法后,工作表中指定的行和列将会被冻结,不会随着滚动而移动。 下面是一个使用NPOI冻结行和列的简单示例: ```csharp // 创建工作簿和工作表 HSSFWorkbook workbook = new HSSFWorkbook(); HSSFSheet sheet = workbook.CreateSheet("Sheet1") as HSSFSheet; // 冻结第一行和前两列 sheet.CreateFreezePane(2, 1); // 创建并设置单元格样式 HSSFCellStyle style = workbook.CreateCellStyle() as HSSFCellStyle; style.Alignment = HorizontalAlignment.Center; // 创建标题行 HSSFRow headerRow = sheet.CreateRow(0) as HSSFRow; headerRow.RowStyle = style; // 设置标题行内容 headerRow.CreateCell(0).SetCellValue("Column A"); headerRow.CreateCell(1).SetCellValue("Column B"); headerRow.CreateCell(2).SetCellValue("Column C"); headerRow.CreateCell(3).SetCellValue("Column D"); // 冻结行和列后,下面的数据将从第二行开始显示 for (int i = 1; i <= 10; i++) { HSSFRow dataRow = sheet.CreateRow(i) as HSSFRow; dataRow.CreateCell(0).SetCellValue("Data " + i); dataRow.CreateCell(1).SetCellValue("Data " + i); dataRow.CreateCell(2).SetCellValue("Data " + i); dataRow.CreateCell(3).SetCellValue("Data " + i); } // 保存Excel文件 using (FileStream fileStream = new FileStream("test.xls", FileMode.Create)) { workbook.Write(fileStream); } ``` 以上示例代码创建了一个Excel文件,并冻结了第一行和前两列。可以根据实际需要调整参数来冻结其他行和列。最后,通过调用CreateFreezePane方法来保存和关闭Excel文件。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值