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,但是其实它这个库是有依赖库的,我们看到SharpZiplibPortable.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(文档)示例

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

最后

Unity技术开发干活 - 总目录

Unity精选 - 专栏目录

Unity之ASE入门到精通 - 专栏目录

UniRx入门到精通 - 专栏目录

  • 5
    点赞
  • 19
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 9
    评论
使用NPOI库可以在C# WPF中读取Excel。你可以按照以下步骤进行操作: 1. 首先,引用NPOI库,并将其添加到项目中。 2. 创建一个ExcelHelper类的实例,并将Excel文件的路径传递给它。例如: ```csharp using (ExcelHelper excelHelper = new ExcelHelper(@"I:\人员信息表.xlsx")) { // 在这里进行读取操作 } ``` 3. 使用ExcelHelper的ExcelToDataTable方法将Excel文件中的数据读取到一个DataTable中。例如: ```csharp dt = excelHelper.ExcelToDataTable("MySheet", true); ``` 这里的"MySheet"是Excel文件中的表格名称,true表示第一行是列名。 4. 如果需要将DataTable转换为ObservableCollection,你可以使用foreach循环遍历DataTable的每一行,并创建personalInfo对象添加到ObservableCollection中。例如: ```csharp foreach (DataRow dr in dt.Rows) { personalInfoList.Add(new personalInfo(dr.ToString(), Int32.Parse(dr.ToString()), dr.ToString(), dr.ToString())); } ``` 这里的personalInfo是一个自定义的类,根据你的需求来定义。 5. 最后,记得在适当的时候释放ExcelHelper对象。例如: ```csharp using (ExcelHelper excelHelper = new ExcelHelper(@"I:\人员信息表.xlsx")) { // 在这里进行读取操作 } ``` 综上所述,使用NPOI库可以方便地在C# WPF中读取Excel文件的数据。你可以根据实际需求进行相应的操作。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* *2* *3* [C# WPF 利用NPOI读写Excel文件。](https://blog.csdn.net/a312024054/article/details/70139172)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 100%"] [ .reference_list ]

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

TxNet.Ltd.

你的赞同是对我的鼓励

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值