NPOI 第一篇 NPOI的下载、引用、基本使用

article/2025/10/21 19:38:55

前言

总渴望去拥有那些自己没有的东西,比如经验、能力;但自己拥有的更为重要的东西,却如此的不珍惜,比如青春。所以啊,趁着青春多写点代码,就能让自己早一步去渴望重新拥有青春了。

有需要的小伙伴可以直接看第二篇 《NPOI 第二篇 设置样式与合并单元格》:
https://blog.csdn.net/wf824284257/article/details/85920867

第二篇的示例代码下载地址:
https://download.csdn.net/download/wf824284257/10899002

问题背景

工作中,需要将datatable导出到excel。最终的方案是用NPOI来完成这个功能,最后也顺利的完成了。这里把它总结一下。

开始

插一句,有没有小伙伴不知道引用文件是什么意思、引用的是什么东西的?笔者也是最近才反应过来这个问题。引用的是dll文件,而dll文件呢,是后台代码编译之后的二进制机器码文件,windows可直接执行。这里引用别人的dll,就相当于多了一部分后台代码,而且已经编译好了。

我们开始吧。

首先去官网下载NPOI

http://npoi.codeplex.com/releases/

然后解压一下,就有这个了

#######################1111111111111

然后我们打开解压好的文件,打开release文件夹,看到有net20和net40文件夹,这里我们打开net40,可以看到一些dll文件。我们这里只需要引用NPOI.dll和NPOI.OOXML.dll

到VS界面,添加引用,选择刚刚那2个dll,并确定。添加完成后,可以在引用里面看到。
这里写图片描述

接下来 using这些

using NPOI;
using NPOI.SS.UserModel;
using NPOI.HSSF.UserModel;
using NPOI.XSSF.UserModel;

然后就可以愉快的使用了。

##NPOI的基本使用

页面上放一个button,点击事件是导出excel。

首先我们通过后台代码从数据库获取到datatable,然后利用NPOI将该dataTable导出到excel。

完整代码如下:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Data;
using System.Data.SqlClient;
using System.Text;
using System.IO;using NPOI;
using NPOI.SS.UserModel;
using NPOI.HSSF.UserModel;
using NPOI.XSSF.UserModel;namespace NPOI_Test1
{
public partial class Page1 : System.Web.UI.Page
{protected void Page_Load(object sender, EventArgs e){}protected void btnExport_Click(object sender, EventArgs e){SqlConnection cn = new SqlConnection();cn.ConnectionString = "server=.;uid=sa;pwd=密码不告诉你;database=dawufan";cn.Open();string sqlstr = @"select * from interest";SqlCommand cmd = new SqlCommand();cmd.Connection = cn;cmd.CommandText = sqlstr;SqlDataReader reader = cmd.ExecuteReader();DataTable dt = ReaderToTable(reader);ExportExcel(dt);cn.Close();cn.Dispose();cmd.Dispose();reader.Close();dt.Dispose();}protected DataTable ReaderToTable(SqlDataReader dr){DataTable dt = new DataTable();for (int i = 0; i < dr.FieldCount; i++){dt.Columns.Add(dr.GetName(i), dr.GetFieldType(i));}object[] objValues = new object[dr.FieldCount];while (dr.Read()){dr.GetValues(objValues);dt.LoadDataRow(objValues, true);}dr.Close();return dt;}protected void ExportExcel(DataTable dt){HttpContext curContext = HttpContext.Current;//设置编码及附件格式curContext.Response.ContentType = "application/vnd.ms-excel";curContext.Response.ContentEncoding = Encoding.UTF8;curContext.Response.Charset = "";string fullName = HttpUtility.UrlEncode("FileName.xls", Encoding.UTF8);curContext.Response.AppendHeader("Content-Disposition","attachment;filename=" + HttpUtility.UrlEncode(fullName, Encoding.UTF8));  //attachment后面是分号byte[] data = TableToExcel(dt, fullName).GetBuffer();curContext.Response.BinaryWrite(TableToExcel(dt, fullName).GetBuffer());curContext.Response.End();}public MemoryStream TableToExcel(DataTable dt, string file){//创建workbookIWorkbook workbook;string fileExt = Path.GetExtension(file).ToLower();if (fileExt == ".xlsx")workbook = new XSSFWorkbook();else if (fileExt == ".xls")workbook = new HSSFWorkbook();elseworkbook = null;//创建sheetISheet sheet = workbook.CreateSheet("Sheet1");//表头IRow headrow = sheet.CreateRow(0);for (int i = 0; i < dt.Columns.Count; i++){ICell headcell = headrow.CreateCell(i);headcell.SetCellValue(dt.Columns[i].ColumnName);}//表内数据for (int i = 0; i < dt.Rows.Count; i++){IRow row = sheet.CreateRow(i + 1);for (int j = 0; j < dt.Columns.Count; j++){ICell cell = row.CreateCell(j);cell.SetCellValue(dt.Rows[i][j].ToString());}}//转化为字节数组MemoryStream ms = new MemoryStream();workbook.Write(ms);ms.Flush();ms.Position = 0;return ms;}}}

结束

今天就到这里了,后面会有介绍NPOI设置excel样式,及复杂一点表格如何实现。

下一步

《NPOI 第二篇 设置样式与合并单元格》:
https://blog.csdn.net/wf824284257/article/details/85920867


http://chatgpt.dhexx.cn/article/s3bNfSuS.shtml

相关文章

NPOI的基本使用

在NPOI初识中简了解了下NPOI的简介和优势&#xff0c;接下来看一下如果下载使用。新建一个小的Demo&#xff0c;如下&#xff1a; 第一步&#xff0c;新建一个控制台应用程序&#xff1a; 第二步&#xff0c;利用Nuget获取NPOI, 这里引用的2.4.1最稳定版本&#xff1a; 引用添…

NOP (code)_NOP指令作用及解析

摘自&#xff1a;维基百科 NOP (code) 前言 在计算机科学中&#xff0c;NOP、no-op 或 NOOP&#xff08;发音为“no op”&#xff1b;no operation 的缩写&#xff09;是一种机器语言指令及其汇编语言助记符、编程语言语句或不执行任何操作的计算机协议命令。 免费的C语言和l…

C# NOPI导出Excel 设置计算公式,多行表头

说明 现需要导出Excel&#xff0c;统计每个人的工作量&#xff0c;计算方式为&#xff1a;项目分值*项目数量 效果 c#代码 //创建工作簿 MemoryStream MStream new MemoryStream();XSSFWorkbook WBook new XSSFWorkbook(); //创建sheet ISheet sheet WBook.CreateSheet(D…

vb.net读取写入EXCEl的终极方法-NOPI。

据我浅薄的知识&#xff0c;之前只知道两种操作excel的方法&#xff1a; 一。ODBC操作excel 看下图&#xff1a; 1.ODBC 由于初期连接不同的数据库通过各种不同的API&#xff0c;ODBC就是将各种不同的API封装成统一的接口。当sql语句进入接口时驱动器管理器会判断将他们送入对…

unity NOPI 创建word文档

unity NOPI 创建word文档 导入NOPI 所需要的DLL ICSharpCode.SharpZipLib.dll&#xff0c;NPOI.dll&#xff0c;NPOI.OOXML.dll&#xff0c;NPOI.OpenXml4Net.dll&#xff0c;NPOI.OpenXmlFormats.dll 打包还需导入I18N.CJK.dll,I18N.dll,I18N.West.dll 如果导入Dll出错,设…

pnpm — Monorepo

1、安装 pnpm npm i pnpm -g 2、创建Monorepo管理文件夹&#xff0c;这里命名 Monorepo&#xff0c;并创建packages文件夹 3、创建用于定义工作空间的根目录的yaml文件&#xff1a; pnpm-workspace.yaml&#xff0c;并添加 packages:- packages/ ** 4、 pnpm init 5、pn…

NOPI用法之自定义单元格背景色(3)

NPOI针对office2003使用HSSFWorkbook&#xff0c;对于offce2007及以上使用XSSFWorkbook&#xff1b;今天我以HSSFWorkbook自定义颜色为例说明&#xff0c;Office2007的未研究呢 在NPOI中默认的颜色类是HSSFColor&#xff0c;它内置的颜色有几十种供我们选择&#xff0c;如果不…

c# 使用NOPI 操作Excel

最近项目需要导出Excel,找来找去,微软有自己的Excel组件 using Microsoft.Office.Core;using Microsoft.Office.Interop.Excel;,但是有一个毛病,就是程序所在电脑安装Office,这个问题简直是致命的,因为导出服务我们要做在服务端,程序直接生成Excel,然后客户端路径去下载,…

C# NOPI 项目实战(经典)(可下载项目源码)

1 -.首先说明下项目目的: 之前我有写过一篇 "NPOI操作EXCEL" 这篇文章主要介绍了如何安装NPOI&#xff0c;以及NPOI具体如何c#教程使用&#xff0c;并且用具体实例介绍了excel导入到datagridview以及 datagridview如何导出到excel并保存。如果不清楚这块的去我公众…

NOPI将数据导出至EXCEL表格

文章目录 前言一、NPOI优势二、运行逻辑三、安装NOPI组件四、导出Excel---实现代码五、最终效果六、总结 前言 NPOI,就是POI的.NET版本。POI是一套用Java写成的库&#xff0c;能够帮助开发者在没有安装微软Office的情况下读写Office 97-2003的文件&#xff0c;支持的文件格式包…

RabbitMQ原理、集群、基本操作及常见故障处理

本次学习主要针对运维人员&#xff0c;和对rabbitmq不熟悉的开发人员。通过本次学习你将掌握rabbitmq 的基本原理、集群、基本运维操作、常见故障处理。 1、原理与概念 简介 AMQP&#xff0c;即Advanced Message Queuing Protocol&#xff0c;高级消息队列协议&#xff0c;是…

RabbitMQ简易原理及使用

黑马程序员RabbitMQ全套教程&#xff0c;rabbitmq消息中间件到实战_哔哩哔哩_bilibili 尚硅谷RabbitMQ教程丨快速掌握MQ消息中间件_哔哩哔哩_bilibili 安装&#xff1a;CentOS8安装RabbitMQ 3.8.9_wcybaonier的博客-CSDN博客 // config改为conf&#xff0c;rabbitmq以后缀识别&…

RabbitMQ-详细讲解原理到使用

这里写目录标题 1.初识MQ1.1.同步和异步通讯1.1.1.同步通讯1.1.2.异步通讯1.2.技术对比&#xff1a; 2.快速入门2.1.安装RabbitMQ1.单机部署1.1.下载镜像1.2.安装MQ 2.2.RabbitMQ消息模型2.3.创建一个Demo工程2.4.入门案例2.4.1.publisher实现2.4.2.consumer实现2.5.总结 3.Spr…

rabbitmq基本原理

AMQP(高级消息队列协议) 是一个异步消息传递所使用的应用层协议规范&#xff0c;作为线路层协议&#xff0c;而不是API&#xff08;例如JMS&#xff09;&#xff0c;AMQP 客户端能够无视消息的来源任意发送和接受信息。 AMQP当中有四个概念非常重要 1. virtual host&#xff…

RabbitMQ 内部结构原理介绍

RabbitMQ简介 RabbitMQ是一个用Erlang语言开发的、实现了AMQP协议的消息中间件。 AMQP :&#xff08;Advanced Message Queue&#xff0c;高级消息队列协议&#xff09;它是应用层协议的一个开放标准&#xff0c;为面向消息的中间件设计&#xff0c;基于此协议的客户端与消息中…

Rabbitmq机制

1.发布与订阅 publish and subscribe 短信发送&#xff0c;消息订阅的功能一般会用到这个模式。 这个模式是通过路由器绑定消息队列来实现的&#xff0c;只要有队列绑定到这个路由器&#xff0c;就会接受改路由器的通知。 2.routing模式 路由模式 在发布订阅模式的基础增加了…

RabbitMQ 架构原理

1.RabbitMQ 架构原理 由于 RabbitMQ 实现了 AMQP 协议&#xff0c;所以 RabbitMQ 的工作模型也是基于 AMQP 的。理解这张图片至关重要。 1.1 Broker 中介 我们要使用 RabbitMQ 来收发消息&#xff0c;必须要安装一个 RabbitMQ 的服务&#xff0c;可以安 装在 Windows 上面也可以…

RabbitMq底层原理分析

RabbitMq消息中间件介绍&为什么要使用消息中间件&什么时候使用消息中间件 我们用java来举例子&#xff0c; 打个比方 我们客户端发送一个下单请求给订单系统&#xff08;order&#xff09;订单系统发送了 一个请求给我们的库存系统告诉他需要更改库存了&#xff0c; 我…

RabbitMQ集群原理介绍

文章目录 一、RabbitMQ默认集群原理1. RabbitMQ集群元数据的同步2. 为何RabbitMQ集群仅采用元数据同步的方式3. RabbitMQ集群发送/订阅消息的基本原理4. 客户端直接连接队列所在节点5. 客户端连接的是非队列数据所在节点7. 集群节点类型磁盘节点内存节点 8. 总结 二、RabbitMQ镜…

RabbitMQ的基本架构与实现原理

目录 1.RabbitMQ Exchange类型 2.RabbitMQ的数据存储 RabbitMQ整体逻辑架构 1.RabbitMQ Exchange类型 常用的交换器类型分为&#xff1a;Direct、Topic、 Fanout、Header 四种。 Fanout fanout类型的交换器会把所有发送到该交换器的消息路由到所有与该交换器绑定的队列中&…