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.mfbz.cn/a/406.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

智能制造数字孪生全要素交付一张网:智造中枢,孪生领航,共建智造生态共同体

在制造业转型升级的浪潮中,数字孪生技术正成为推动行业变革的核心引擎。从特斯拉通过数字孪生体实现车辆全生命周期优化,到海尔卡奥斯工业互联网平台赋能千行百业,数字孪生技术已从概念验证走向规模化落地。通过构建覆盖全国的交付网络&#…

使用 Ansible 在 Windows 服务器上安装 SSL 证书

在本教程中,我将向您展示如何使用 Ansible 在 Windows 服务器上安装 SSL 证书。使用 Ansible 自动化 SSL 证书安装过程可以提高 IT 运营的效率、一致性和协作性。我将介绍以下步骤: 将 SSL 证书文件复制到服务器将 PFX 证书导入指定的存储区获取导入的证…

【Auto.js例程】华为备忘录导出到其他手机

目录 问题描述方法步骤1.安装下载Visual Studio Code2.安装扩展3.找到Auto.js插件,并安装插件4.启动服务器5.连接手机6.撰写脚本并运行7.本文实现功能的代码8.启动手机上的换机软件 问题描述 问题背景:华为手机换成一加手机,华为备忘录无法批…

静态相机中的 CCD和CMOS的区别

文章目录 CCD处理方式CMOS处理方式两者区别 首先根据 成像原理,CCD和CMOS的作用是一致的,都是为了将光子转化为数字图像,只是 转换的方式出现差异。 CCD处理方式 获取光子: 在电荷耦合器件(CCD)传感器中…

C#中的路由事件(Routed Events)

路由事件的基本概念 路由事件是WPF中特有的事件系统,它允许事件在可视化树中"路由"传递,具有以下特点: 事件路由方向: 冒泡(Tunneling):从事件源向根元素传递 隧道(Bubbling):从根元素向事件源…

抽象工厂模式深度解析:从原理到与应用实战

作者简介 我是摘星,一名全栈开发者,专注 Java后端开发、AI工程化 与 云计算架构 领域,擅长Python技术栈。热衷于探索前沿技术,包括大模型应用、云原生解决方案及自动化工具开发。日常深耕技术实践,乐于分享实战经验与…

力扣面试150题--克隆图

Day 61 题目描述 思路 /* // Definition for a Node. class Node {public int val;public List<Node> neighbors;public Node() {val 0;neighbors new ArrayList<Node>();}public Node(int _val) {val _val;neighbors new ArrayList<Node>();}public N…

Axure零基础跟我学:展开与收回

亲爱的小伙伴,如有帮助请订阅专栏!跟着老师每课一练,系统学习Axure交互设计课程! Axure产品经理精品视频课https://edu.csdn.net/course/detail/40420 课程主题:Axure菜单展开与收回 课程视频:

第十三节:第四部分:集合框架:HashMap、LinkedHashMap、TreeMap

Map集合体系 HashMap集合的底层原理 HashMap集合底层是基于哈希表实现的 LinkedHashMap集合的底层原理 TreeMap集合的底层原理 代码&#xff1a; Student类 package com.itheima.day26_Map_impl;import java.util.Objects;public class Student implements Comparable<Stu…

命名管道实现本地通信

目录 命名管道实现通信 命名管道通信头文件 创建命名管道mkfifo 删除命名管道unlink 构造函数 以读方式打开命名管道 以写方式打开命名管道 读操作 写操作 析构函数 服务端 客户端 运行结果 命名管道实现通信 命名管道通信头文件 #pragma#include <iostream> #include &l…

Spring 框架之IOC容器加载重要组件

1.读取配置 如果配置了这样的Bean: 或者 或者 这些是不同定义bean的方式&#xff0c; 他们最终都会生成bean。 那Spring为了生成bean代码复用&#xff0c;使用统一的创建流程&#xff0c;所以通过多态方式读取不同的配置会有不同的读取器&#xff0c;读取完后后续创建bean的流程…

数字证书_CA_详解

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