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

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 文件

今天在本文中&#xff0c;我们将尝试使用NPOI库将图像插入到 Excel 文件的特定位置。请将以下逻辑添加到您的写作方法中&#xff0c;在 Excel 文件中添加图像&#xff08;JPEG、PNG&#xff09;,我已经有一个示例 jpeg 文件 - Read-write-excel-npoi.jpg &#xff0c;我们将尝试…...

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ə/&#xff1a;the 11th letter of the Greek alphabet (希腊语字母表的第 11 个字母)https://learn.m…...

【Rust自学】11.4. 用should_panic检查恐慌

喜欢的话别忘了点赞、收藏加关注哦&#xff0c;对接下来的教程有兴趣的可以关注专栏。谢谢喵&#xff01;(&#xff65;ω&#xff65;) 11.4.1. 验证错误处理的情况 测试函数出了验证代码的返回值是否正确&#xff0c;还需要验证代码是否如预期的去处理了发生错误的情况。比…...

高斯函数Gaussian绘制matlab

高斯 约翰卡尔弗里德里希高斯&#xff0c;&#xff08;德语&#xff1a;Johann Carl Friedrich Gau&#xff0c;英语&#xff1a;Gauss&#xff0c;拉丁语&#xff1a;Carolus Fridericus Gauss&#xff09;1777年4月30日–1855年2月23日&#xff0c;德国著名数学家、物理学家…...

获取客户端真实IP地址

当处理来自客户端的请求时&#xff0c;尤其是在存在代理服务器的情况下&#xff0c;可能需要考虑多种HTTP请求头&#xff0c;以尽可能准确地获取用户的真实IP地址。以下是考虑了X-Forwarded-For、Proxy-Client-IP、WL-Proxy-Client-IP、HTTP_CLIENT_IP、HTTP_X_FORWARDED_FOR的…...

Kotlin学习(一)

1. Kotlin 作用域函数 如果同学们已经在项目中用过 Kotlin 语言&#xff0c;那么一定见过 let 函数&#xff01;因为每当 Kotlin 检测到某个对象可能为空时&#xff0c;会自动帮我们修改为用 let 函数实现&#xff1a;user.name?.let{ textView.text it }。这里的 let 函数就…...

鸿蒙UI开发——日历选择器

1、概 述 在项目开发中&#xff0c;我们时常会用到日历选择器&#xff0c;效果如下&#xff1a; ArkUI已经为我们提供了组件&#xff0c;我们可以直接使用&#xff0c;下面针对日历组件做简单介绍。 2、CalendarPickerDialog 接口定义如下&#xff1a; // 定义日历选择器弹…...

2025-1-9 QT 使用 QXlsx库 读取 .xlsx 文件 —— 导入 QXlsx库以及读取 .xlsx 的源码 实践出真知,你我共勉

文章目录 1. 导入QXlsx库2. 使用 QXlsx库 读取 .xlsx 文件小结 网上有很多教程&#xff0c;但太费劲了&#xff0c;这里有个非常简便的好方法&#xff0c;分享给大家。 1. 导入QXlsx库 转载链接 &#xff1a;https://github.com/QtExcel/QXlsx/blob/master/HowToSetProject.md…...

React中createRoot函数原理解读——Element对象与Fiber对象、FiberRootNode与HostRootNode

【2024最新版】React18 核心源码分析教程&#xff08;全61集&#xff09; Element对象与Fiber对象 在 React 中&#xff0c;Element 对象 和 Fiber 对象 是核心概念&#xff0c;用于实现 React 的高效渲染和更新机制。以下是它们的详细解读&#xff1a; 1. Element 对象 定…...

利用Python实现Union-Find算法

Union-Find&#xff08;又称 并查集&#xff09;是一种高效解决 动态连通性问题 的算法。它主要提供两种操作&#xff1a; Union(x, y)&#xff1a;将元素 x 和 y 连接。Find(x)&#xff1a;找到元素 x 所属的集合的标识符&#xff08;通常是集合的根节点&#xff09;。 常用…...

【LeetCode: 912. 排序数组 + 归并排序】

&#x1f680; 算法题 &#x1f680; &#x1f332; 算法刷题专栏 | 面试必备算法 | 面试高频算法 &#x1f340; &#x1f332; 越难的东西,越要努力坚持&#xff0c;因为它具有很高的价值&#xff0c;算法就是这样✨ &#x1f332; 作者简介&#xff1a;硕风和炜&#xff0c;…...

AI时代来了,我们不再需要IDE了

大家好&#xff0c;我是编程乐趣。 最近在思考一个问题&#xff0c;那就是AI这么强大。 未来有没有可能&#xff0c;我们就不需要不需要开发工具了&#xff0c;只需一个浏览器就可以开发软件了。 一、AI带来的变化 1、代码生成与补全 AI工具如GitHub Copilot等能够根据代码…...

PL/SQL语言的网络编程

PL/SQL语言的网络编程 引言 在信息化迅速发展的今天&#xff0c;网络编程作为现代软件开发的重要组成部分&#xff0c;受到了广泛关注。而在数据库管理系统中&#xff0c;Oracle 提供了 PL/SQL&#xff08;Procedural Language/Structured Query Language&#xff09;&#x…...

vue video重复视频 设置 srcObject 视频流不占用资源 减少资源浪费

// 直接设置srcObject减少获取视频流&#xff1a;通过 captureStream() 方法从下方视频元素获取视频流。 // 设置 srcObject&#xff1a;将获取到的视频流设置为上方视频的 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.找到要上传的文件&#xff0c;在目录内右键点击 5.依次执行命令 在命令窗口中输入&#xff1a;git init 复制仓库地址&#xff1a; 在命令窗口中输入&#xff1a;git remote add origin 仓库地址 在命令窗口中输入&#xff1a;…...

风水算命系统架构与功能分析

系统架构 服务端&#xff1a;Java&#xff08;最低JDK1.8&#xff0c;支持JDK11以及JDK17&#xff09;数据库&#xff1a;MySQL数据库&#xff08;标配5.7版本&#xff0c;支持MySQL8&#xff09;ORM框架&#xff1a;Mybatis&#xff08;集成通用tk-mapper&#xff0c;支持myb…...

Clojure语言的学习路线

Clojure语言的学习路线 Clojure是一种现代的Lisp方言&#xff0c;运行于Java虚拟机&#xff08;JVM&#xff09;上。它具备强大的函数式编程特性&#xff0c;支持并发和多线程编程&#xff0c;适合处理复杂的数据和计算任务。由于其简洁和灵活的语法&#xff0c;Clojure在数据…...

网络安全核心目标CIA

网络安全的核心目标是为关键资产提供机密性(Confidentiality)、可用性(Availablity)、完整性(Integrity)。作为安全基础架构中的主要的安全目标和宗旨&#xff0c;机密性、可用性、完整性频频出现&#xff0c;被简称为CIA&#xff0c;也被成为你AIC&#xff0c;只是顺序不同而已…...

Wi-Fi Direct (P2P)原理及功能介绍

目录 Wi-Fi Direct &#xff08;P2P&#xff09;介绍Wi-Fi Direct P2P 概述P2P-GO&#xff08;P2P Group Owner&#xff09;工作流程 wifi-Direct使用windows11 wifi-directOpenwrtwifi的concurrent mode Linux环境下的配置工具必联wifi芯片P2P支持REF Wi-Fi Direct &#xff…...

Show-o多模态理解:图像描述和视觉问答的终极解决方案

Show-o多模态理解&#xff1a;图像描述和视觉问答的终极解决方案 【免费下载链接】Show-o [ICLR & NeurIPS 2025] Repository for Show-o series, One Single Transformer to Unify Multimodal Understanding and Generation. 项目地址: https://gitcode.com/gh_mirrors/…...

NY378固态MT29F32T08GSLBHL8-24QA:B

NY378固态MT29F32T08GSLBHL8-24QA:B你是否曾好奇&#xff0c;那些默默支撑着工业设备稳定运行、保障数据高速流转的存储核心&#xff0c;究竟蕴藏着怎样的技术密码&#xff1f;今天&#xff0c;我们将聚焦一颗在特定领域中扮演关键角色的芯片——来自美光&#xff08;Micron&am…...

别再手动标注了!用MakeSense一键导入YOLO标签,效率翻倍(附完整流程)

别再手动标注了&#xff01;用MakeSense一键导入YOLO标签&#xff0c;效率翻倍&#xff08;附完整流程&#xff09; 在计算机视觉领域&#xff0c;目标检测&#xff08;Object Detection&#xff09;项目的效率瓶颈往往出现在数据标注环节。传统工作流中&#xff0c;开发者需要…...

别再只用JSON了!聊聊Qt里QDataStream的二进制序列化优势与避坑指南

二进制序列化新选择&#xff1a;Qt中QDataStream的高效实践与深度解析 在Qt开发者的工具箱里&#xff0c;JSON和XML常被视为数据交换的默认选择&#xff0c;但当面对高性能、紧凑存储或跨版本兼容性需求时&#xff0c;二进制序列化方案往往能带来意想不到的优势。QDataStream作…...

影刀RPA跨境店群自动化实战:Python协同Chromium底层调度与容器化环境隔离系统架构

定了。在这场旷日持久的跨境电商反爬风控拉锯战中&#xff0c;我们终于用一套基于 Python 深度协同的分布式微服务调度架构&#xff0c;重塑了跨境千店矩阵的自动化底座。 这几天&#xff0c;科技圈被“DeepSeek V4 首发华为昇腾芯片&#xff0c;国产 AI 开始打破英伟达 CUDA …...

手把手教你:在ARM架构服务器上源码编译PyTorch 1.8.1并适配华为昇腾NPU

在ARM架构服务器上源码编译PyTorch 1.8.1并适配华为昇腾NPU实战指南 当AI开发遇上国产化硬件浪潮&#xff0c;越来越多的团队开始尝试在ARM架构服务器上部署深度学习框架。本文将带你深入探索在华为鲲鹏等ARM服务器上从零开始编译PyTorch 1.8.1&#xff0c;并最终对接昇腾NPU加…...

从星座图乱麻到清晰:手把手教你用OpenOFDM搞定Wi-Fi信号频偏校正

从星座图乱麻到清晰&#xff1a;手把手教你用OpenOFDM搞定Wi-Fi信号频偏校正 当你第一次用软件无线电&#xff08;SDR&#xff09;捕获Wi-Fi信号时&#xff0c;看到的星座图像是被猫抓过的毛线团——杂乱无章的斑点毫无规律地散布在平面上。这种令人沮丧的场景&#xff0c;正是…...

Excel MCP Server终极指南:5步实现无Excel环境下的Excel文件操作

Excel MCP Server终极指南&#xff1a;5步实现无Excel环境下的Excel文件操作 【免费下载链接】excel-mcp-server A Model Context Protocol server for Excel file manipulation 项目地址: https://gitcode.com/gh_mirrors/ex/excel-mcp-server Excel MCP Server是一个基…...

Vidupe智能视频去重工具:3步高效清理重复视频的实用指南

Vidupe智能视频去重工具&#xff1a;3步高效清理重复视频的实用指南 【免费下载链接】vidupe Vidupe is a program that can find duplicate and similar video files. V1.211 released on 2019-09-18, Windows exe here: 项目地址: https://gitcode.com/gh_mirrors/vi/vidup…...

钉钉知识库日志迁移至Cursor的实践方法和具体操作步骤

一、钉钉知识库导出方法 方法1:手动导出(适合文档数量较少) 操作步骤: 电脑端钉钉 → 左下角【更多】→【文档】→【知识库】 进入目标知识库,打开需要迁移的文档 点击页面左上角 【文档】→【下载为】 选择导出格式:Word (.docx)、PDF 或 长图 文件默认以当前文档…...