使用NPOI core插入图片
闲的无聊,封装一个NPOI core插入图片,下面贴上代码,有注释,我就不讲解了
public class ExcelHelper
{
/// <summary>
/// excel插入图片
/// </summary>
/// <param name="excelPath">excel路径</param>
/// <param name="imgStream">图片流</param>
/// <param name="rowNumber">图片插入到哪行</param>
/// <param name="pictureType">图片类型</param>
/// <param name="cellNumber">图片插入到那列</param>
/// <param name="height">图片所在的那行的高度</param>
/// <param name="sheelNumber">哪个sheel,默认为第一个</param>
public static void InsertImage(string excelPath, Stream imgStream, PictureType pictureType, int rowNumber, int cellNumber, short height, int sheelNumber = 0)
{
if (!File.Exists(excelPath))
{
throw new Exception($"file path:'{excelPath}' does not exists.");
}
using (Stream excelStream = new FileStream(excelPath, FileMode.Open))
{
IWorkbook workbook = WorkbookFactory.Create(excelStream);
///判断sheet是否存在
ISheet sheet = workbook.GetSheetAt(sheelNumber);
if (sheet == null)
{
sheet = workbook.CreateSheet($"sheet{sheelNumber}");
}
///判断行是否存在
IRow row = sheet.GetRow(rowNumber);
if (row == null)
{
row = sheet.CreateRow(rowNumber);
}
//设置行高
row.Height = height;
///判断列是否存在
ICell cell = row.GetCell(cellNumber);
if (cell == null)
{
cell = row.CreateCell(cellNumber);
}
//将图片流读取到byte数组
byte[] bytes = new byte[imgStream.Length];
imgStream.Read(bytes, 0, (int)imgStream.Length); int pictureIdx = workbook.AddPicture(bytes, pictureType);
IDrawing patriarch = sheet.CreateDrawingPatriarch();
//指定图片插入的位置
IClientAnchor anchor = new XSSFClientAnchor(0, 10, 0, 0, cellNumber, rowNumber, cellNumber + 1, rowNumber + 1);
string extension = Path.GetExtension(excelPath);
if (extension == ".xls")
{
anchor = new HSSFClientAnchor(0, 10, 0, 0, cellNumber, rowNumber, cellNumber+1, rowNumber + 1);
} IPicture pict = patriarch.CreatePicture(anchor, pictureIdx); using (Stream stream = File.OpenWrite(excelPath))
{
workbook.Write(stream);
} }
}
}
使用NPOI core插入图片的更多相关文章
- 2.4.5 用NPOI操作EXCEL--插入图片
我们知道,在Excel中是可以插入图片的.操作菜单是“插入->图片”,然后选择要插入图片,可以很容易地在Excel插入图片.同样,在NPOI中,利用代码也可以实现同样的效果.在NPOI中插入图片 ...
- C#调用NPOI组件读取excel表格数据转为datatable写入word表格中并向word中插入图片/文字/书签 获得书签列表
调用word的com组件将400条数据导入word表格中耗时10分钟简直不能忍受,使用NPOI组件耗时4秒钟.但是NPOI中替换书签内容的功能不知道是不支持还是没找到. 辅助类 Excel表格数据与D ...
- NPOI(2.1.3)向excel中插入图片,xls文档图片插入成功,xlsx文档图片插入失败
众所周知,NPOI对xls和xlsx两个版本的excel文档的操作并没有一个统一的支持, 程序若想兼容这两个版本的操作,必须根据excel版本分别去调用HSSF和XSSF这两套操作库, 之前一直不明白 ...
- Npoi XWPF Word 导出时插入图片无法显示 bug 完美解决
一.来自客户的需求 最近客户来个新需求生成一个word 标签纸,并且需要在标签纸上插入一个logo,并且将erp 中的数据取出来自动写在文档上,不由得淡淡一笑,这不难呀! 于是乎我就写下了这样的代码: ...
- 向EXECL文件中导入数据的同时插入图片
因为项目需要在导出数据到EXECL文档的同时还需要导出图片进去,在处理是遇到的一些问题,在此记录一下. 首先代码写好之后放测试服务器上去执行的时候报错了,报检索 COM 类工厂中 CLSID 为 {0 ...
- c#在Excel指定单元格中插入图片
方法一: /// 将图片插入到指定的单元格位置,并设置图片的宽度和高度./// 注意:图片必须是绝对物理路径/// </summary>/// <param name="R ...
- NPOI2.2.0.0实例详解(十一)—向EXCEL插入图片
--------------------- 本文来自 天水宇 的CSDN 博客 ,全文地址请点击:https://blog.csdn.net/xxs77ch/article/details/50553 ...
- .NET Core 首例 Office 开源跨平台组件(NPOI Core)
前言 最近项目中,需要使用到 Excel 导出,找了一圈发现没有适用于 .NET Core的,不依赖Office和操作系统限制的 Office 组件,于是萌生了把 NPOI 适配并移植到 .NET C ...
- C#向PPT文档插入图片以及导出图片
PowerPoint演示文稿是我们日常工作中常用的办公软件之一,而图片则是PowerPoint文档的重要组成部分,那么如何向幻灯片插入图片以及导出图片呢?本文我将给大家分享如何使用一个免费版Power ...
- MWeb 1.4 新功能介绍一:引入文件夹到 MWeb 中管理,支持 Octpress、Jekyll 等静态博客拖拽插入图片和实时预览
之前在 MWeb 中打开非文档库中的 Markdown 文档,如果文档中有引用到本机图片,是没办法在 MWeb 中显示出来和预览的.这是因为 Apple 规定在 Mac App Store(MAS) ...
随机推荐
- 使用supervisor管理tomcat,nginx等进程详解
1,介绍 官网:http://supervisord.org Supervisor是用Python开发的一套通用的进程管理程序,能将一个普通的命令行进程变为后台daemon,并监控进程状态,异常退出时 ...
- PAT (Basic Level) Practice 1005 继续(3n+1)猜想 分数 25
卡拉兹(Callatz)猜想已经在1001中给出了描述.在这个题目里,情况稍微有些复杂. 当我们验证卡拉兹猜想的时候,为了避免重复计算,可以记录下递推过程中遇到的每一个数.例如对 n=3 进行验证的时 ...
- 洛谷P4304 TJOI2013 攻击装置 (二分图匹配)
题目大意:一个矩阵,一些点被拿掉,在棋盘上马走日,马之间不能落在同一点,求最多放几匹马. 采用对矩阵黑白染色,画个图可以发现:马可以走到的位置和他所处的位置颜色不同,将马和他可以走到的位置连边,最多可 ...
- P3998 [SHOI2013]发微博 方法记录
原题链接 [SHOI2013]发微博 题目描述 刚开通的 SH 微博共有 \(n\) 个用户(\(1\sim n\) 标号),在这短短一个月的时间内,用户们活动频繁,共有 \(m\) 条按时间顺序的记 ...
- MySQL之安装(linux两种版本版本安装)
LinuxMySQL安装(Mysql5.5版本) 第一种 有安装包的安装方式 1.下载地址: http://dev.mysql.com/downloads/mysql 2.检查当前系统是否安装过mys ...
- 5.ElasticSearch系列之文档的基本操作
1. 文档写入 # create document. 自动生成 _id POST users/_doc { "user" : "shenjian", " ...
- Vue学习之--------Vue中过滤器(filters)的使用(代码实现)(2022/7/18)
1.过滤器 1.1 概念 过滤器: 定义:对要显示的数据进行特定格式化后再显示(适用于一些简单逻辑的处理). 语法: 1.注册过滤器:Vue.filter(name,callback) 或 new V ...
- 齐博X1到底是个什么鬼?
什么是齐博/齐博CMS之X1? 齐博X1是齐博软件基于thinkphp5开发的内容管理系统,拓展性非常强,后台一键升级,后台提供丰富的频道模块云市插件市场.风格市场.钩子市场,所有都是一键在线安装. ...
- 【云原生 · Kubernetes】KubeVirt热迁移
[云原生 · Kubernetes]KubeVirt热迁移 检查节点和kubevirt状态 启用热迁移 创建虚拟机 在虚拟机上启动一个服务 迁移虚拟机 热迁移是KubeVirt支持的一个常见虚拟化特性 ...
- 重新认识下JVM级别的本地缓存框架Guava Cache——优秀从何而来
大家好,又见面了. 本文是笔者作为掘金技术社区签约作者的身份输出的缓存专栏系列内容,将会通过系列专题,讲清楚缓存的方方面面.如果感兴趣,欢迎关注以获取后续更新. 不知不觉,这已经是<深入理解缓存 ...