C# 或 .NetCore 如何使用 NPOI 导出图片到 Excel 文件
今天在本文中,我们将尝试使用NPOI库将图像插入到 Excel 文件的特定位置。请将以下逻辑添加到您的写作方法中,在 Excel 文件中添加图像(JPEG、PNG),我已经有一个示例 jpeg 文件 - Read-write-excel-npoi.jpg ,我们将尝试将其插入索引 (5,5),即第 5 行和第 5 列。

在第 5 行和第 5 列,将以编程方式插入上述图像,代码如下:
byte[] data = File.ReadAllBytes("Read-write-excel-npoi.jpg");//根据自己路径读取图片
int pictureIndex = workbook.AddPicture(data, PictureType.JPEG);
ICreationHelper helper = workbook.GetCreationHelper();
IDrawing drawing = excelSheet.CreateDrawingPatriarch();
IClientAnchor anchor = helper.CreateClientAnchor();
anchor.Col1 = 5;
anchor.Row1 = 5;
IPicture picture = drawing.CreatePicture(anchor, pictureIndex);
picture.Resize();
用图像写入 EXCEL
下面是一个 POC 完整代码示例,如下所示:
static void WriteExcel()
{
List<UserDetails> persons = new List<UserDetails>()
{
new UserDetails() {ID="1001", Name="ABCD", City ="City1", Country="USA"},
new UserDetails() {ID="1002", Name="PQRS", City ="City2", Country="INDIA"},
new UserDetails() {ID="1003", Name="XYZZ", City ="City3", Country="CHINA"},
new UserDetails() {ID="1004", Name="LMNO", City ="City4", Country="UK"},
};
// Lets converts our object data to Datatable for a simplified logic.
// Datatable is most easy way to deal with complex datatypes for easy reading and formatting.
DataTable table = (DataTable)JsonConvert.DeserializeObject(JsonConvert.SerializeObject(persons), (typeof(DataTable)));
var memoryStream = new MemoryStream();
using (var fs = new FileStream("Result.xlsx", FileMode.OpenOrCreate, FileAccess.Write))
{
IWorkbook workbook = new XSSFWorkbook();
ISheet excelSheet = workbook.CreateSheet("TestSheet1");
List<String> columns = new List<string>();
IRow row = excelSheet.CreateRow(0);
int columnIndex = 0;
foreach (System.Data.DataColumn column in table.Columns)
{
columns.Add(column.ColumnName);
row.CreateCell(columnIndex).SetCellValue(column.ColumnName);
columnIndex++;
}
int rowIndex = 1;
foreach (DataRow dsrow in table.Rows)
{
row = excelSheet.CreateRow(rowIndex);
int cellIndex = 0;
foreach (String col in columns)
{
row.CreateCell(cellIndex).SetCellValue(dsrow[col].ToString());
cellIndex++;
}
rowIndex++;
}
byte[] data = File.ReadAllBytes("Read-write-excel-npoi.jpg");
int pictureIndex = workbook.AddPicture(data, PictureType.JPEG);
ICreationHelper helper = workbook.GetCreationHelper();
IDrawing drawing = excelSheet.CreateDrawingPatriarch();
IClientAnchor anchor = helper.CreateClientAnchor();
anchor.Col1 = 5;
anchor.Row1 = 5;
IPicture picture = drawing.CreatePicture(anchor, pictureIndex);
picture.Resize();
workbook.Write(fs);
}
}
我将图像文件保存在同一个项目目录中,以便 Excel API 可以使用它并将其加载到 Excel 中的正确位置。最后图像将成功输入到所需位置:

如果您喜欢此文章,请收藏、点赞、评论,谢谢,祝您快乐每一天。
相关文章:
C# 或 .NetCore 如何使用 NPOI 导出图片到 Excel 文件
今天在本文中,我们将尝试使用NPOI库将图像插入到 Excel 文件的特定位置。请将以下逻辑添加到您的写作方法中,在 Excel 文件中添加图像(JPEG、PNG),我已经有一个示例 jpeg 文件 - Read-write-excel-npoi.jpg ,我们将尝试…...
Lambda expressions in C++ (C++ 中的 lambda 表达式)
Lambda expressions in C {C 中的 lambda 表达式} 1. Parts of a lambda expression (Lambda 表达式的各个部分)1.2. Parameter list (Optional) References lambda /ˈlm.də/:the 11th letter of the Greek alphabet (希腊语字母表的第 11 个字母)https://learn.m…...
【Rust自学】11.4. 用should_panic检查恐慌
喜欢的话别忘了点赞、收藏加关注哦,对接下来的教程有兴趣的可以关注专栏。谢谢喵!(・ω・) 11.4.1. 验证错误处理的情况 测试函数出了验证代码的返回值是否正确,还需要验证代码是否如预期的去处理了发生错误的情况。比…...
高斯函数Gaussian绘制matlab
高斯 约翰卡尔弗里德里希高斯,(德语:Johann Carl Friedrich Gau,英语:Gauss,拉丁语:Carolus Fridericus Gauss)1777年4月30日–1855年2月23日,德国著名数学家、物理学家…...
获取客户端真实IP地址
当处理来自客户端的请求时,尤其是在存在代理服务器的情况下,可能需要考虑多种HTTP请求头,以尽可能准确地获取用户的真实IP地址。以下是考虑了X-Forwarded-For、Proxy-Client-IP、WL-Proxy-Client-IP、HTTP_CLIENT_IP、HTTP_X_FORWARDED_FOR的…...
Kotlin学习(一)
1. Kotlin 作用域函数 如果同学们已经在项目中用过 Kotlin 语言,那么一定见过 let 函数!因为每当 Kotlin 检测到某个对象可能为空时,会自动帮我们修改为用 let 函数实现:user.name?.let{ textView.text it }。这里的 let 函数就…...
鸿蒙UI开发——日历选择器
1、概 述 在项目开发中,我们时常会用到日历选择器,效果如下: ArkUI已经为我们提供了组件,我们可以直接使用,下面针对日历组件做简单介绍。 2、CalendarPickerDialog 接口定义如下: // 定义日历选择器弹…...
2025-1-9 QT 使用 QXlsx库 读取 .xlsx 文件 —— 导入 QXlsx库以及读取 .xlsx 的源码 实践出真知,你我共勉
文章目录 1. 导入QXlsx库2. 使用 QXlsx库 读取 .xlsx 文件小结 网上有很多教程,但太费劲了,这里有个非常简便的好方法,分享给大家。 1. 导入QXlsx库 转载链接 :https://github.com/QtExcel/QXlsx/blob/master/HowToSetProject.md…...
React中createRoot函数原理解读——Element对象与Fiber对象、FiberRootNode与HostRootNode
【2024最新版】React18 核心源码分析教程(全61集) Element对象与Fiber对象 在 React 中,Element 对象 和 Fiber 对象 是核心概念,用于实现 React 的高效渲染和更新机制。以下是它们的详细解读: 1. Element 对象 定…...
利用Python实现Union-Find算法
Union-Find(又称 并查集)是一种高效解决 动态连通性问题 的算法。它主要提供两种操作: Union(x, y):将元素 x 和 y 连接。Find(x):找到元素 x 所属的集合的标识符(通常是集合的根节点)。 常用…...
【LeetCode: 912. 排序数组 + 归并排序】
🚀 算法题 🚀 🌲 算法刷题专栏 | 面试必备算法 | 面试高频算法 🍀 🌲 越难的东西,越要努力坚持,因为它具有很高的价值,算法就是这样✨ 🌲 作者简介:硕风和炜,…...
AI时代来了,我们不再需要IDE了
大家好,我是编程乐趣。 最近在思考一个问题,那就是AI这么强大。 未来有没有可能,我们就不需要不需要开发工具了,只需一个浏览器就可以开发软件了。 一、AI带来的变化 1、代码生成与补全 AI工具如GitHub Copilot等能够根据代码…...
PL/SQL语言的网络编程
PL/SQL语言的网络编程 引言 在信息化迅速发展的今天,网络编程作为现代软件开发的重要组成部分,受到了广泛关注。而在数据库管理系统中,Oracle 提供了 PL/SQL(Procedural Language/Structured Query Language)&#x…...
vue video重复视频 设置 srcObject 视频流不占用资源 减少资源浪费
// 直接设置srcObject减少获取视频流:通过 captureStream() 方法从下方视频元素获取视频流。 // 设置 srcObject:将获取到的视频流设置为上方视频的 srcObject 减少资源浪费 // 获取到需要复制到的dom元素 const firstVideoElement proxy.$refs.firs…...
JavaFx 21 项目Markdown 预览、编辑、新建、文件树、删除、重命名
项目文件结构 项目的源代码和资源文件存放在以下路径: 源代码: src/main/java/com/kong/markdown/ 包含多个 Java 文件,主要实现了应用的功能: App.java:主类,可能包含应用的启动逻辑。FileService.java:可能与文件操作相关的服务类。MainController.java:控制器类,可…...
git项目提交步骤(简洁版)
1.创建仓库 2.填写 信息 3.点击这个按钮 4.找到要上传的文件,在目录内右键点击 5.依次执行命令 在命令窗口中输入:git init 复制仓库地址: 在命令窗口中输入:git remote add origin 仓库地址 在命令窗口中输入:…...
风水算命系统架构与功能分析
系统架构 服务端:Java(最低JDK1.8,支持JDK11以及JDK17)数据库:MySQL数据库(标配5.7版本,支持MySQL8)ORM框架:Mybatis(集成通用tk-mapper,支持myb…...
Clojure语言的学习路线
Clojure语言的学习路线 Clojure是一种现代的Lisp方言,运行于Java虚拟机(JVM)上。它具备强大的函数式编程特性,支持并发和多线程编程,适合处理复杂的数据和计算任务。由于其简洁和灵活的语法,Clojure在数据…...
网络安全核心目标CIA
网络安全的核心目标是为关键资产提供机密性(Confidentiality)、可用性(Availablity)、完整性(Integrity)。作为安全基础架构中的主要的安全目标和宗旨,机密性、可用性、完整性频频出现,被简称为CIA,也被成为你AIC,只是顺序不同而已…...
Wi-Fi Direct (P2P)原理及功能介绍
目录 Wi-Fi Direct (P2P)介绍Wi-Fi Direct P2P 概述P2P-GO(P2P Group Owner)工作流程 wifi-Direct使用windows11 wifi-directOpenwrtwifi的concurrent mode Linux环境下的配置工具必联wifi芯片P2P支持REF Wi-Fi Direct ÿ…...
PHP短信发送功能的实现与优化指南
在现代Web应用中,短信通知是用户认证、营销推送和安全预警的重要渠道。本文将深入解析一个PHP短信发送函数的实现原理,并通过代码优化展示如何提升其安全性、可靠性和性能。核心实现原理短信发送的基本原理是通过HTTP请求调用第三方短信服务API。以下是一…...
神经结构搜索(NAS)编码策略解析:从邻接矩阵到路径优化的实战指南
1. 神经结构搜索(NAS)编码策略入门指南 第一次接触神经结构搜索(NAS)时,我被那些晦涩的术语搞得一头雾水。直到在真实项目中踩过几次坑才明白,编码策略的选择直接影响着整个搜索过程的效率。简单来说,NAS编码就像给神经网络结构设计"身份…...
MG811SpaceData:嵌入式端CO₂传感器四维建模与多气体解耦框架
1. MG811SpaceData 库技术解析:面向嵌入式系统的电化学气体传感器数据科学框架1.1 工程定位与设计哲学MG811SpaceData 并非传统意义上的传感器驱动库,而是一个嵌入式端轻量化数据科学框架,其核心目标是在资源受限的微控制器(如Ard…...
SpringBoot集成Sqlite3+mybatisPlus+Druid实战指南与避坑手册
1. 为什么选择Sqlite3MybatisPlusDruid组合 在轻量级应用开发中,Sqlite3因其零配置、无服务器的特性成为嵌入式数据库的首选。我去年开发一个物联网设备管理系统时,就遇到过需要本地存储设备运行数据的场景。当时尝试过H2和Derby,最终发现Sql…...
交流与直流接触器:原理差异与工程防护
1. 交流接触器与直流接触器的本质区别接触器作为电气控制领域的核心元件,其线圈设计直接决定了工作特性。从业十余年来,我处理过太多因误接电源导致的设备故障案例。让我们从电磁原理层面,彻底搞懂这两种接触器的差异。交流接触器线圈采用粗线…...
三维重建“贪吃蛇”算法揭秘:Advancing Front如何像拼图一样构建表面?
三维重建中的“贪吃蛇”算法:Advancing Front如何像拼图一样构建表面? 想象一下玩拼图游戏时,你总是从边缘开始,逐步向中心推进。Advancing Front算法正是以这种动态边界扩展的方式,将散乱的点云数据转化为连续的三维表…...
ColorControl终极指南:专业级NVIDIA显卡与LG电视显示调校完全手册
ColorControl终极指南:专业级NVIDIA显卡与LG电视显示调校完全手册 【免费下载链接】ColorControl Easily change NVIDIA display settings and/or control LG TVs 项目地址: https://gitcode.com/gh_mirrors/co/ColorControl ColorControl是一款功能强大的开…...
C#怎么批量删除指定格式文件_C#如何遍历清空目录【干货】
应先用Directory.GetFiles精准匹配再逐个删除,避免Directory.Delete误删或报错;需处理权限、占用、只读等异常,并注意中文路径、ACL跳过、句柄未释放等问题。用 Directory.GetFiles 精准匹配再删,别直接 Directory.Delete批量删指…...
OpenClaw成本优化:Qwen3.5-9B长任务拆解与Token消耗监控
OpenClaw成本优化:Qwen3.5-9B长任务拆解与Token消耗监控 1. 为什么需要关注OpenClaw的Token消耗 上周我让OpenClaw帮我整理一个季度的工作报告,结果第二天发现账户里的大模型调用额度几乎见底。查看日志才发现,这个看似简单的任务竟然消耗了…...
# MAUI 中的异步加载优化实战:从理论到高性能 UI 体验提升在现代跨平台移动开发中,*
MAUI 中的异步加载优化实战:从理论到高性能 UI 体验提升 在现代跨平台移动开发中,.NET MAUI(Multi-platform App UI) 已成为越来越多开发者首选的技术栈。它不仅支持原生性能,还提供了统一的 API 来构建 iOS、Android …...
