NPOI Excel用OLE对象的形式插入文件附件以及插入图片

static void Main(string[] args)
{XlsWithObjData();Console.WriteLine("输出完成");
}static void XlsWithObjData()
{// 创建工作簿和单元格,只有HSSFWorkbook,XSSFWorkbook不可以HSSFWorkbook workbook = new HSSFWorkbook();HSSFSheet sheet = (HSSFSheet)workbook.CreateSheet("Sheet1");IRow row = sheet.CreateRow(0);ICell cell = row.CreateCell(0);// 读取ZIP文件为字节数组byte[] zipData = File.ReadAllBytes("001.pdf");var imgData = File.ReadAllBytes("001.png");var iconid = workbook.AddPicture(imgData, PictureType.PNG);var pdfIdx = workbook.AddOlePackage(zipData, "222.pdf", "333.pdf", "111.pdf");HSSFPatriarch drawing = (HSSFPatriarch)sheet.CreateDrawingPatriarch();HSSFClientAnchor anchor = (HSSFClientAnchor)drawing.CreateAnchor(0, 0, 0, 0, 1, 1, 0, 0);anchor.AnchorType = AnchorType.MoveAndResize;drawing.CreateObjectData(anchor, pdfIdx, iconid);// 保存文件var fileName = DateTime.Now.ToString("yyyy_MM_dd_HH_mm_ss") + ".xls";FileStream fs = new FileStream(fileName, FileMode.Create);workbook.Write(fs);fs.Close();workbook.Close();
}
//插入图片
static void InsertImg()
{//创建工作簿HSSFWorkbook wk = new HSSFWorkbook();ISheet sheet = wk.CreateSheet("sheet1");//sheet.SetColumnWidth(0, 1);//sheet.AutoSizeColumn(0);//添加内容IRow row = sheet.CreateRow(0);ICell cell = row.CreateCell(0);HSSFRichTextString rich = new HSSFRichTextString("签名:");cell.SetCellValue(rich);//添加图片byte[] bytes = System.IO.File.ReadAllBytes("001.png");int pictureIdx = wk.AddPicture(bytes, PictureType.PNG);HSSFPatriarch patriarch = (HSSFPatriarch)sheet.CreateDrawingPatriarch();//HSSFClientAnchor anchor = new HSSFClientAnchor(0, 0, 1023, 0, 0, 0, 1, 3);HSSFClientAnchor anchor = new HSSFClientAnchor(223, 0, 0, 0, 0, 0, 1, 1);//设置图片变换类型anchor.AnchorType = AnchorType.MoveDontResize;HSSFPicture pict = (HSSFPicture)patriarch.CreatePicture(anchor, pictureIdx);//pict.Resize(100,50);//保存到文件var fileName = DateTime.Now.ToString("yyyy_MM_dd_HH_mm_ss") +"图片"+ ".xls";FileStream fs = new FileStream(fileName, FileMode.Create);wk.Write(fs);fs.Close();wk.Close();Console.WriteLine("导出数据成功!");
}

参考

https://blog.csdn.net/m0_72440880/article/details/137240571

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

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

相关文章

企业数字化转型实战:某行业研究院如何通过SD-WAN技术优化网络架构?

一、引言 随着企业数字化转型的深入推进,传统网络架构在灵活性、可靠性和管理效率方面逐渐暴露不足。SD-WAN(软件定义广域网)技术凭借其智能化、自动化和高效的特点,逐渐成为企业网络架构优化的首选方案。本文以某研究院数字化基…

数字证书_CA_详解

目录 一、数字证书简介 二、 CA(证书颁发机构) (一) 证书链(信任链) 1. 根证书 2. 中间证书 3. 网站证书 (二) 抓包软件的证书链与信任机制 1. 抓包通信流程 2. 证书链伪造与信任验证流程 (三) 关于移动设备的CA 一、数…

Android协程学习

目录 Android上的Kotlin协程介绍基本概念与简单使用示例协程的高级用法 结构化并发线程调度器(Dispatchers)自定义调度器并发:同步 vs 异步 异步并发(async 并行执行)同步顺序执行协程取消与超时 取消机制超时控制异步数据流 Flow协程间通信 使用 Channel使用 StateFlow /…

统计学(第8版)——假设检验学习笔记(考试用)

一、假设检验核心框架 (一)解决的核心问题 判断样本与总体 / 样本与样本的差异是由抽样误差还是本质差异引起 典型场景: 产品合格率是否达标(比例检验)工艺改进后均值是否显著变化(均值检验&#xff09…

Java求职者面试:微服务技术与源码原理深度解析

Java求职者面试:微服务技术与源码原理深度解析 第一轮:基础概念问题 1. 请解释什么是微服务架构,并说明其优势和挑战。 微服务架构是一种将单体应用拆分为多个小型、独立的服务的软件开发方法。每个服务都运行在自己的进程中,并…

c# 局部函数 定义、功能与示例

C# 局部函数:定义、功能与示例 1. 定义与功能 局部函数(Local Function)是嵌套在另一个方法内部的私有方法,仅在包含它的方法内可见。 • 作用:封装仅用于当前方法的逻辑,避免污染类作用域,提升…

ava多线程实现HTTP断点续传:原理、设计与代码实现

一、引言 在当今互联网环境下,大文件下载需求日益增长。传统单线程下载方式效率低下,且一旦下载中断,需要重新开始。断点续传技术通过将文件分块并利用多线程并行下载,显著提升了下载效率,同时支持中断后继续下载。本…

vla学习 富

# 基于diffusion # π0 ## 架构 其核心思想是在预训练好的视觉语言模型(VLM)基础上添加一个“动作专家”(action expert),通过流匹配(flow matching)的方式生成连续的高频控制指令。整个架构可以…

降雨预测系统(机器学习)

这是一个基于Python开发的降雨预测系统,使用机器学习算法对指定月份的降雨概率进行预测。该系统提供了友好的图形用户界面(GUI),支持数据可视化和交互式操作。 ## 功能特点 - 📊 生成历史降雨数据(2015-2024年) - 🤖 使用逻辑回归模型进行降雨预测 - 📈 可视化…

逻辑回归与Softmax

Softmax函数是一种将一个含任意实数的K维向量转化为另一个K维向量的函数,这个输出向量的每个元素都在(0, 1)区间内,并且所有元素之和等于1。 因此,它可以被看作是某种概率分布,常用于多分类问题中作为输出层的激活函数。这里我们以拓展逻辑回归解决多分类的角度对Softmax函…

基于PSO与BP神经网络分类模型的特征选择实战(Python实现)

说明:这是一个机器学习实战项目(附带数据代码文档),如需数据代码文档可以直接到文章最后关注获取。 1.项目背景 在机器学习建模过程中,特征选择是提升模型性能、降低计算复杂度的重要环节。尤其在高维数据场景下&…

深度学习之模型压缩三驾马车:基于ResNet18的模型剪枝实战(1)

一、背景:为什么需要模型剪枝? 随着深度学习的发展,模型参数量和计算量呈指数级增长。以ResNet18为例,其在ImageNet上的参数量约为1100万,虽然在服务器端运行流畅,但在移动端或嵌入式设备上部署时&#xf…

uni-app学习笔记二十四--showLoading和showModal的用法

showLoading(OBJECT) 显示 loading 提示框, 需主动调用 uni.hideLoading 才能关闭提示框。 OBJECT参数说明 参数类型必填说明平台差异说明titleString是提示的文字内容,显示在loading的下方maskBoolean否是否显示透明蒙层,防止触摸穿透,默…

【大模型RAG】六大 LangChain 支持向量库详细对比

摘要 向量数据库已经成为检索增强生成(RAG)、推荐系统和多模态检索的核心基础设施。本文从 Chroma、Elasticsearch、Milvus、Redis、FAISS、Pinecone 六款 LangChain 官方支持的 VectorStore 出发,梳理它们的特性、典型应用场景与性能边界&a…

【MySQL】数据库三大范式

目录 一. 什么是范式 二. 第一范式 三. 第二范式 不满足第二范式时可能出现的问题 四. 第三范式 一. 什么是范式 在数据库中范式其实就是一组规则,在我们设计数据库的时候,需要遵守不同的规则要求,设计出合理的关系型数据库,…

Coze工作流-语音故事创作-文本转语音的应用

教程简介 本教程将带着大家去了解怎么样把文本转换成语音,例如说我们要做一些有声故事,我们可能会用上一些语音的技术,来把你创作的故事朗读出来 首先我们创建一个工作流 对各个模块进行编辑,如果觉得系统提示词写的不好&#xf…

5.子网划分及分片相关计算

某公司网络使用 IP 地址空间 192.168.2.0/24,现需将其均分给 市场部 和 研发部 两个子网。已知: 🏢 市场部子网 🖥️ 已分配 IP 地址范围:192.168.2.1 ~ 192.168.2.30🌐 路由器接口 IP:192.16…

三体问题详解

从物理学角度,三体问题之所以不稳定,是因为三个天体在万有引力作用下相互作用,形成一个非线性耦合系统。我们可以从牛顿经典力学出发,列出具体的运动方程,并说明为何这个系统本质上是混沌的,无法得到一般解…

机器学习算法时间复杂度解析:为什么它如此重要?

时间复杂度的重要性 虽然scikit-learn等库让机器学习算法的实现变得异常简单(通常只需2-3行代码),但这种便利性往往导致使用者忽视两个关键方面: 算法核心原理的理解缺失 忽视算法的数据适用条件 典型算法的时间复杂度陷阱 SV…

uniapp 对接腾讯云IM群组成员管理(增删改查)

UniApp 实战:腾讯云IM群组成员管理(增删改查) 一、前言 在社交类App开发中,群组成员管理是核心功能之一。本文将基于UniApp框架,结合腾讯云IM SDK,详细讲解如何实现群组成员的增删改查全流程。 权限校验…