前言
NPOI是指构建在POI 3.x版本之上的一个程序,NPOI可以在没有安装Office的情况下对Word或Excel文档进行读写操作。
NPOI是一个开源的C#读写Excel、WORD等微软OLE2组件文档的项目
https://github.com/nissl-lab/npoi
NPOI的优势
1、完全免费的
2、涵盖 Excel 的大部分功能(单元格样式、数据格式、公式等)
3、支持的格式:xls、xlsx、docx。
4、设计为面向接口(查看 NPOI.SS 命名空间)
5、 不仅支持导出,还支持导入
6、全球真实成功案例
7、大量的基本示例 https://github.com/nissl-lab/npoi-examples
8、适用于 Windows 和 Linux
下载库
打开vs或者rider的NuGet面板
下载Npoi,如下图所示
注意,Npoi目前好像只支持.NetFramework 2.x和.NetFramework 4.x,所以如果是使用Unity引擎来操作Npoi的话,记得下载.NetFramework4.x的开发库。
下载完成后如下图所示:
注意,虽然我们下载的是NPOI,但是其实它这个库是有依赖库的,我们看到SharpZiplib和Portable.BouncyCastle都是NPOI的依赖库,所以,如果我们希望导入Unity或者Unreal使用的话,一定要这三个库同时拷贝。否则在Unity或Unreal中,NPOI会报错,提示找不到xxxx引用。
如果你不方便下载或者因为各种原因的话,那么可以从我的demo中下载,我这都是最新的库。
https://github.com/passiony/npoi_unity_plugins
Exce基本读
using NPOI.SS.UserModel;
namespace ReadAndPrintData
{
class Program
{
static void Main(string[] args)
{
Console.OutputEncoding = System.Text.Encoding.UTF8;
var workbook = WorkbookFactory.Create("data.xlsx");
ISheet sheet = workbook.GetSheetAt(0);
foreach (IRow row in sheet)
{
for (var i = 0; i < row.LastCellNum; i++)
{
var cell = row.GetCell(i);
if (cell != null)
{
Console.Write(cell.ToString());
Console.Write("\t");
}
}
Console.WriteLine();
}
Console.Read();
}
}
}
Excel写
using NPOI.SS.UserModel;
using NPOI.XSSF.UserModel;
using System.IO;
namespace NPOI.Examples.XSSF.SetCellValuesInXlsx
{
class Program
{
static void Main(string[] args)
{
IWorkbook workbook = new XSSFWorkbook();
ISheet sheet1 = workbook.CreateSheet("Sheet1");
sheet1.CreateRow(0).CreateCell(0).SetCellValue("This is a Sample");
int x = 1;
for (int i = 1; i <= 15; i++)
{
IRow row = sheet1.CreateRow(i);
for (int j = 0; j < 15; j++)
{
row.CreateCell(j).SetCellValue(x++);
}
}
FileStream sw = File.Create("test.xlsx");
workbook.Write(sw);
sw.Close();
}
}
}
其他操作
其他操作,我就不一一列举了,官方提供的有example仓库。里面有各种版本,各种示例的demo可供参考。
请参考https://github.com/nissl-lab/npoi-examples
文件夹解释
文件夹名 | 解释 |
---|---|
SS | Excel 2003(xls) 和 Excel 2007+(xlsx) 的通用示例 |
HSSF | Excel 97-2003,xls示例 |
XSSF | Excel 2007(xlsx) 示例 |
XWPF | Word 2007(docx)示例 |
POIFS | OLE2/ActiveX 文档示例 |
OOXML | OpenXml 格式低级示例 |
ScratchPad/HWPF | Word 2003(文档)示例 |
希望这篇文章可以对你有所帮助