添加链接
link之家
链接快照平台
  • 输入网页链接,自动生成快照
  • 标签化管理网页链接

在之前的 文章 中简单的使用了下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 System.Threading.Tasks;

namespace ExcelHelper
{
class Program
{
static void Main(string[] args)
{
Stopwatch watch = new Stopwatch();
watch.Start();
string path = @"E:\C#每日一个知识点\TestFile\File.xlsx";
FileInfo file = new FileInfo(path);
using (var package = new ExcelPackage(file))
{
var sheet = package.Workbook.Worksheets.Where(x => x.Name == "hello").First();
sheet.SetValue(1,1, "EPPlus value");
package.Save();
}

watch.Stop();
Console.WriteLine($"Time is {watch.ElapsedMilliseconds} ms");
Console.ReadLine();
}
}
}

EPPlus 和NPOI简单的Demo对比_公众号

那接下来,看一下NPOI的Demo:

Code:

using NPOI.HSSF.UserModel;
using NPOI.SS.UserModel;
using NPOI.XSSF.UserModel;
using System;
using System.Collections.Generic;
using System.Data;
using System.Diagnostics;
using System.IO;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace NPOIDemo
{
class Program
{
static void Main(string[] args)
{
Stopwatch watch = new Stopwatch();
watch.Start();
string path = @"E:\C#每日一个知识点\TestFile\File.xlsx";
IWorkbook workbook = null;
using (var fs = new FileStream(path, FileMode.Open, FileAccess.ReadWrite))
{
if (path.IndexOf(".xlsx") > 0) // 2007
workbook = new XSSFWorkbook(fs);
else if (path.IndexOf(".xls") > 0) // 2003
workbook = new HSSFWorkbook(fs);
}

var sheet = workbook.GetSheet("hello");
if (sheet.GetRow(1) == null) sheet.CreateRow(1);
if (sheet.GetRow(1).GetCell(1) == null) sheet.GetRow(1).CreateCell(1);
sheet.GetRow(1).GetCell(1).SetCellValue("NPOI value");

using (FileStream fs = new FileStream(path, FileMode.Create, FileAccess.Write, FileShare.Write))
{
workbook.Write(fs);
}

watch.Stop();
Console.WriteLine($"Time is {watch.ElapsedMilliseconds} ms");
Console.ReadLine();
}
}
}

EPPlus 和NPOI简单的Demo对比_公众号_02

所以,就针对只插入一条数据来看,EPPlus相对用时较少。

可是在网上看到的是,NPOI性能较好一些,那么再做一个Demo, 各操作一个File,分别插入10000条数据,分别查看用时和文件大小。


EPPlus 和NPOI简单的Demo对比_公众号_03

EPPlus第一次执行 EPPlus第N次执行 NPOI第一次执行 NPOI第N次执行

如果觉得文章写得还行,请点个赞。如果想与我进一步交流,可以关注我的公众号

EPPlus 和NPOI简单的Demo对比_公众号_07


EPPlus 和NPOI简单的Demo对比_公众号_08 公众号_DotNet微说.jpg

c 与python c与python混合编程 教程

导语Python有很多库,Qt用来编写界面,自然产生C++调用Python的需求。一路摸索,充满艰辛添加头文件搜索路径,导入静态库我的python头文件搜索路径:C:\Python27amd64\include 静态库在:C:\Python27amd64\libs简易示例//hello.py #!/usr/bin/env python # -*- coding: utf-8 -*- def xpr