使用NPOI库导出Excel文件可以按照以下步骤进行:

  1. 添加NPOI库的引用:在项目中添加对NPOI库的引用。

  2. 创建一个新的Excel文件对象:使用NPOI中的HSSFWorkbook(对应.xls格式)或XSSFWorkbook(对应.xlsx格式)来创建一个新的Excel文件对象。

var workbook = new HSSFWorkbook(); // 或者使用 XSSFWorkbook()

  1. 创建一个工作表对象:使用workbook.CreateSheet()方法创建一个新的工作表对象。
var sheet = workbook.CreateSheet("Sheet1");

  1. 创建行和单元格:使用sheet.CreateRow()方法创建新的行对象,然后使用row.CreateCell()方法在行中创建单元格。
var row = sheet.CreateRow(0);
var cell = row.CreateCell(0);

  1. 设置单元格的值:使用cell.SetCellValue()方法设置单元格的值。
cell.SetCellValue("Hello World!");

  1. 保存Excel文件:使用FileStream将Excel文件保存到指定的路径。
using (var fs = new FileStream("path/to/file.xls", FileMode.Create, FileAccess.Write))
{workbook.Write(fs);
}

完整的示例代码如下:

using NPOI.HSSF.UserModel;
using NPOI.SS.UserModel;
using System.IO;class Program
{static void Main(string[] args){var workbook = new HSSFWorkbook();var sheet = workbook.CreateSheet("Sheet1");var row = sheet.CreateRow(0);var cell = row.CreateCell(0);cell.SetCellValue("Hello World!");using (var fs = new FileStream("path/to/file.xls", FileMode.Create, FileAccess.Write)){workbook.Write(fs);}}
}

注意:在使用NPOI库之前,需要将该库添加到项目中,可以通过NuGet包管理器添加NPOI库的引用。

接口示例

  /// <summary>/// 导出/// </summary>/// <param name="ids"></param>/// <returns></returns>[HttpPost]public FileStreamResult ExportExcel(List<IdInDto> ids){string zipPath = @$"{ExcelExporter.GetImportDir()}\{GUIDHelper.NewGuid}.zip";foreach (var item in dic){string filePath = @$"{ExcelExporter.GetImportDir()}\{item.Key}.xlsx";//生成excel逻辑ExcelExporter.AddFileToZip(zipPath, filePath);}FileStream fileStream = new FileStream(zipPath, FileMode.Open, FileAccess.Read);return new FileStreamResult(fileStream, "application/octet-stream") { FileDownloadName = "导出.zip" };}
  public class ExcelExporter{/// <summary>/// 创建目录/// </summary>/// <returns></returns>public static string GetImportDir(){string fileFolder = Path.Combine(AppContext.BaseDirectory, $"Export");fileFolder += "\\" + DateTime.Now.Date.ToString("yyyy-MM-dd");FileHelper.CreateIfNotExists(fileFolder);return fileFolder;}/// <summary>/// 添加文件到zip/// </summary>/// <param name="zipPath"></param>/// <param name="fileToAdd"></param>/// <exception cref="FileNotFoundException"></exception>public static void AddFileToZip(string zipPath, string fileToAdd){// 确保要添加的文件存在if (!File.Exists(fileToAdd)){throw new FileNotFoundException("文件未找到。");}// 确保ZIP文件存在if (!File.Exists(zipPath)){using (ZipArchive zipArchive = ZipFile.Open(zipPath, ZipArchiveMode.Create)){// 添加文件到ZIP文件中zipArchive.CreateEntryFromFile(fileToAdd, Path.GetFileName(fileToAdd));}}else{using (ZipArchive zipArchive = ZipFile.Open(zipPath, ZipArchiveMode.Update)){// 添加文件到ZIP文件中zipArchive.CreateEntryFromFile(fileToAdd, Path.GetFileName(fileToAdd));}}}}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如若转载,请注明出处:http://www.pswp.cn/web/84549.shtml
繁体地址,请注明出处:http://hk.pswp.cn/web/84549.shtml
英文地址,请注明出处:http://en.pswp.cn/web/84549.shtml

如若内容造成侵权/违法违规/事实不符,请联系英文站点网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【AGI】突破感知-决策边界:VLA-具身智能2.0

突破感知-决策边界&#xff1a;VLA-具身智能2.0 &#xff08;一&#xff09;技术架构核心&#xff08;二&#xff09;OpenVLA&#xff1a;开源先锋与性能标杆&#xff08;三&#xff09;应用场景&#xff1a;从实验室走向真实世界&#xff08;四&#xff09;挑战与未来方向&…

消融实验视角下基于混合神经网络模型的银行股价预测研究

链接: 项目链接_link 结果 模型消融&#xff1a; 特征消融&#xff1a; 中国银行_不同模型预测结果和模型评估可视化 招商银行_不同模型预测结果和模型评估可视化 模型评估可视化

MySQL存储引擎与架构

MySQL存储引擎与架构 1.1详细了解数据库类型 1.1.1关系型数据库 常见产品&#xff1a;MySQL&#xff08;免费&#xff09;、Oracle 关系型数据库模型是把复杂的数据结构归结为简单二维表格形式。通常该表第一行为字段名称&#xff0c;描述该字段的作用&#xff0c;下面是具体…

将浮点数转换为分数

原理 double 由以下部分组成&#xff1a; 符号位指数部分尾数部分 符号位的含义&#xff1a;为 0 表示正数&#xff0c;为 1 表示负数。指数部分的含义&#xff1a;在规格化数中&#xff0c;指数部分的整型值减去 1023 就是实际的指数值。在非规格化数中&#xff0c;指数恒为…

前端实现截图的几种方法

前端实现截图的几种方法 前端实现截图功能有多种方式&#xff0c;下面我将介绍几种常用的方法及其实现方案。 1. 使用 html2canvas 库 html2canvas 是最流行的前端截图解决方案之一&#xff0c;它可以将 DOM 元素转换为 canvas。 基本用法 import html2canvas from html2c…

TDengine 与开源可视化编程工具 Node-RED 集成

简介 Node-RED 是由 IBM 开发的基于 Node.js 的开源可视化编程工具&#xff0c;通过图形化界面组装连接各种节点&#xff0c;实现物联网设备、API 及在线服务的连接。同时支持多协议、跨平台&#xff0c;社区活跃&#xff0c;适用于智能家居、工业自动化等场景的事件驱动应用开…

OpenCV——图像形态学

图像形态学 一、像素的距离二、像素的邻域三、膨胀与腐蚀3.1、结构元素3.2、腐蚀3.3、膨胀 四、形态学操作4.1、开运算和闭运算4.2、顶帽和黑帽4.3、形态学梯度4.4、击中击不中 一、像素的距离 图像中像素之间的距离有多种度量方式&#xff0c;其中常用的有欧式距离、棋盘距离…

在Django中把Base64字符串保存为ImageField

在数据model中使用ImageField来管理avatar。 class User(models.Model):AVATAR_COLORS ((#212736, Black),(#2161FD, Blue),(#36B37E, Green),(#F5121D, Red),(#FE802F, Orange),(#9254DE, Purple),(#EB2F96, Magenta),)def generate_filename(self, filename):url "av…

使用 R 处理图像

在 R 中进行图像处理&#xff0c;使用像 imager 这样的包&#xff0c;可以实现强大的数字图像分析和处理。本博客将基于"图像数据分析"文档的概念&#xff0c;演示使用 imager 包进行的关键技术——图像增强、去噪和直方图均衡化&#xff0c;并通过可视化结果展示这些…

一命速通Prometheus+Grafana+Consul+VictoriaMetrics

Prometheus业务 搭建及使用 注意&#xff1a;优先看完提供的博客链接&#xff0c;可以快速了解该工具的功能及其搭建和使用。 prometheusgrafana 一、PrometheusGrafana普罗米修斯&#xff0c;搭建和使用_普罗米修斯 grafana-CSDN博客 ./prometheus --config.fileprometheus.ym…

蚂蚁百宝箱快速创建智能体AI小程序

蚂蚁百宝箱官网https://tbox.alipay.com/community?operationSource1006/ 以下是一篇关于蚂蚁百宝箱快速创建智能体 AI 小程序的图文并茂的博客&#xff1a; 标题&#xff1a;蚂蚁百宝箱快速创建智能体 AI 小程序&#xff0c;开启智能应用新体验 引言 在数字化飞速发展的当…

大模型面试题:RL Scaling Law 中的“过优化”现象及其缓解方法是啥?

更多面试题&#xff0c;请看 大模型面试题总结-CSDN博客 或者 https://gitee.com/lilitom/ai_interview_questions/blob/master/README.md 最好将URL复制到浏览器中打开&#xff0c;不然可能无法直接打开 ---------------------------------------------------------------…

Filecoin系列 - IPLD 技术分析

1. 用途 1.1 存储数据 为了成功地将数据加到 Filecoin 网络, 需要成功完成以下步骤: 客户端导入数据生成CAR文件: 数据必须打包成 CAR file (内容可寻址档案) - CAR是IPLD规范的序列化归档文件.存储交易: 存储供应商和客户之间的存储交易必须由客户发起, 并由存储供应商接受…

Apptrace如何帮我精准追踪移动广告效果?

开发者视角&#xff1a;Apptrace如何帮我精准追踪移动广告效果&#xff1f;​​ 作为独立开发者&#xff0c;我最头疼的就是​“广告投放到底有没有用&#xff1f;”​——钱花出去了&#xff0c;用户是刷量机器人还是真实用户&#xff1f;哪个渠道的ROI最高&#xff1f;Apptr…

【MySQL篇07】:redo log日志与buffer pool详解

文章目录 1. Buffer Pool 缓冲池2. redo log (重做日志)redo log 的作用&#xff1a;为什么需要 redo log buffer&#xff1f;什么时候刷盘呢&#xff1f; 3. 总结一下 redo log 和 Buffer Pool 在更新数据时的协同工作关键组件关系图刷盘完成后 1. Buffer Pool 缓冲池 首先&a…

Qt Library库系列----Serial串口

前言 每次写串口相关的功能时&#xff0c;总是需要重新写或者复制原来写过的文件&#xff0c;容易出错不说&#xff0c;这也不是码农的风格&#xff0c;所以还是得有一套自己得代码库&#xff0c;方便调用&#xff0c;又能保持神秘感。 一、开发需求 1.有个实例类&#xff1b;…

第八节:Vben Admin 最新 v5.0 (vben5) 快速入门 - 用户管理(下)

Vben5 系列文章目录 💻 基础篇 ✅ 第一节:Vben Admin 最新 v5.0 (vben5) 快速入门 ✅ 第二节:Vben Admin 最新 v5.0 (vben5) 快速入门 - Python Flask 后端开发详解(附源码) ✅ 第三节:Vben Admin 最新 v5.0 (vben5) 快速入门 - 对接后端登录接口(上) ✅ 第四节:Vben Ad…

Redis 性能瓶颈时如何处理?

当 Redis 遇到性能瓶颈时&#xff0c;需要从多个维度进行排查和优化。以下是系统化的解决方案&#xff0c;涵盖硬件、配置、数据模型、网络等关键点&#xff1a; 一、硬件资源优化 内存瓶颈 现象&#xff1a;频繁触发 OOM 或 used_memory 接近物理内存。解决&#xff1a; 升级服…

多相机三维人脸扫描仪:超写实数字人模型制作“加速器”

超写实数字人&#xff0c;又称“数字分身”&#xff0c;是以真人形象为原型构建的高仿真虚拟形象&#xff0c;按维度可分为2D数字人与3D数字人。这类数字人已广泛应用于影视制作、游戏交互、品牌直播等场景&#xff0c;其核心价值在于通过技术手段实现真人形象的数字化复刻&…

ceph 自动调整 pg_num

要让 Ceph 的 pool 自动调整 pg_num(PG 数量),你需要启用 PG autoscaler。这是从 Ceph Octopus(15.x) 开始引入的功能,能根据池的容量和对象数量自动建议或调整 pg_num,以实现负载均衡。 ✅ 一步步开启 Pool 的 pg_num 自动调整 1. 启用 PG autoscaler 模块(通常默认启…