当前位置: 首页 > news >正文

C#接入 NPOI

前言

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
文件夹解释

文件夹名解释
SSExcel 2003(xls) 和 Excel 2007+(xlsx) 的通用示例
HSSFExcel 97-2003,xls示例
XSSFExcel 2007(xlsx) 示例
XWPFWord 2007(docx)示例
POIFSOLE2/ActiveX 文档示例
OOXMLOpenXml 格式低级示例
ScratchPad/HWPFWord 2003(文档)示例

希望这篇文章可以对你有所帮助

相关文章:

  • 面试百问:项目上线后才发现bug怎么办?
  • SpringBoot+Vue实现前后端分离网上药店平台
  • Simulink 自动代码生成电机控制:基于Keil软件集成
  • LQ0103 子串分值【字符串】
  • 数据库实战经验分享(全量表,增量表,拉链表,流水表,快照表)
  • 【node.js从入门到精通】使用express创建web服务器,路由,进行中间件的创建链接路由及其他中间件
  • [附源码]Java计算机毕业设计SSM电力公司员工安全培训系统
  • stm32f4xx-ADC
  • Linux命令老是记不住?一篇文章帮你解决。Linux常用命令汇总
  • 基于SPSS的医疗医保费用数据分析预测(C#)
  • 2022年科协第二次硬件培训总结
  • 计算机网络 性能指标 思维导图
  • 【初学者入门C语言】之编译预处理(十)
  • 【MySQL从入门到精通】【高级篇】(二十六)建了索引就能用么?我看未必。来看看几种索引失效的情况吧
  • leetcode47全排列2刷题打卡
  • 【前端学习】-粗谈选择器
  • Brief introduction of how to 'Call, Apply and Bind'
  • ES6 学习笔记(一)let,const和解构赋值
  • LeetCode18.四数之和 JavaScript
  • Mac转Windows的拯救指南
  • MQ框架的比较
  • MySQL主从复制读写分离及奇怪的问题
  • 对话:中国为什么有前途/ 写给中国的经济学
  • 分布式熔断降级平台aegis
  • 分享自己折腾多时的一套 vue 组件 --we-vue
  • 京东美团研发面经
  • 通过npm或yarn自动生成vue组件
  • 学习ES6 变量的解构赋值
  • 一个6年java程序员的工作感悟,写给还在迷茫的你
  • 原创:新手布局福音!微信小程序使用flex的一些基础样式属性(一)
  • ​​快速排序(四)——挖坑法,前后指针法与非递归
  • #传输# #传输数据判断#
  • (1)(1.11) SiK Radio v2(一)
  • (1/2)敏捷实践指南 Agile Practice Guide ([美] Project Management institute 著)
  • (10)工业界推荐系统-小红书推荐场景及内部实践【排序模型的特征】
  • (20)目标检测算法之YOLOv5计算预选框、详解anchor计算
  • (2009.11版)《网络管理员考试 考前冲刺预测卷及考点解析》复习重点
  • (delphi11最新学习资料) Object Pascal 学习笔记---第8章第2节(共同的基类)
  • (DFS + 剪枝)【洛谷P1731】 [NOI1999] 生日蛋糕
  • (LNMP) How To Install Linux, nginx, MySQL, PHP
  • (Redis使用系列) Springboot 实现Redis消息的订阅与分布 四
  • (Redis使用系列) Springboot 使用redis实现接口Api限流 十
  • (附源码)spring boot儿童教育管理系统 毕业设计 281442
  • (附源码)计算机毕业设计SSM基于java的云顶博客系统
  • (官网安装) 基于CentOS 7安装MangoDB和MangoDB Shell
  • (七)c52学习之旅-中断
  • (已更新)关于Visual Studio 2019安装时VS installer无法下载文件,进度条为0,显示网络有问题的解决办法
  • (转)visual stdio 书签功能介绍
  • *** 2003
  • .cfg\.dat\.mak(持续补充)
  • .dwp和.webpart的区别
  • .NET 的程序集加载上下文
  • .net2005怎么读string形的xml,不是xml文件。
  • .net开发引用程序集提示没有强名称的解决办法
  • .net开源工作流引擎ccflow表单数据返回值Pop分组模式和表格模式对比