npoi插入word图片(终于解决插入图片后打不开word)
npoi向word插入图片总结
npoi插入word,一把辛酸一把泪呀,开始总是不能插入图片,一插入就word就打不开了,网上百度,好多人都有这个问题,后来看到一篇poi博客poi博客介绍到这个是一个poi项目的bug。后来就一直在想怎么解决这个bug,悻然我们.net也有大神的存在,博客解决了这个问题npoi博客,但是我照着他的套路做,总是不成功,提示“未将对象引用设置到对象的实例”,好崩溃,后来让老大过来帮忙,终于解决了。特别提示:不同npoi版本对word操作有很大影响。博主曾经试验过很多npoi版本,最后确定npoi2.1.3,兼容性良好。(最后成功整理好的代码,换了其他版本,就不行,就是这么神奇,最新版本2.2.1也不行,想不通poi团队怎么会允许这个bug存在这么长时间)。下面开始正式介绍。
一、介绍这个插入图片的bug
你在网上看到的代码可能是这个样子:
1
2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 |
XWPFDocument doc = new XWPFDocument();
XWPFParagraph p1 = doc.CreateParagraph(); XWPFRun x = p1.CreateRun(); using (FileStream fsImg = new FileStream("E:/1.jpg", FileMode.Open, FileAccess.Read)) { x.AddPicture(fsImg, (int)PictureType.PNG, "asd", (int)(400.0 * 9525), (int)(300.0 * 9525)); } using (FileStream fs = new FileStream("1.docx", FileMode.Create)) { doc.Write(fs); } |
上面这段代码初次运行,没有任何问题,word也能打得开,因为是初次创建word,里面没有任何内容。但是你若将FileMode.Create换成FileMode.Append,你再试试,打开word,就会出现下面这个界面:
这是为什么呢?据那篇博客介绍,这是因为在向有内容的word插入图片时,没有正确写入xml文件。那么这个xml文件从哪里看呢?word文件是可以用winRAR打开的,你用winRAR打开就看到了。
结论:上述代码在首次创建word时可以插入图片,当word中有内容的时候追加,就会产生错误写入xml,从而出现打不开word的局面。
二、解决办法
既然不能Append,那我们就在首次创建word的时候,将所有图片一次性加入吧。代码如下:
1
2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 |
for (int i = 0; i < text.Count; i++)
{ XWPFParagraph par = doc.CreateParagraph(); par.Alignment = ParagraphAlignment.LEFT;//左对齐 XWPFRun run = par.CreateRun(); run.FontFamily = "宋体"; run.FontSize = 12; run.SetBold(false); par.IndentationFirstLine = 500;//首行缩进 run.SetText(text[i].ToString());//为每段设置值 //每段后面都加入一张图片 using (FileStream fsImg = new FileStream(@"C:\Users\lx\Desktop\10.jpg", FileMode.Open, FileAccess.Read)) { run.AddPicture(fsImg, (int)PictureType.JPEG, "10.jpg", (int)(500.0 * 9525), (int)(400.0 * 9525)); } } XWPFParagraph hm_xp = doc.CreateParagraph(); |
附上npoi插入页码教程:插入页码
注:每插入一张图片,都必须开启一次文件流,注意是必须,一个文件流只能插入一张图片,所以,最好的办法就是循环。
本次博客就分享到这里,我们下次再会。
npoi插入word图片(终于解决插入图片后打不开word)相关推荐
- 解决Xshell7安装后打不开的问题
解决Xshell7安装后打不开的问题 1.右击我的电脑/计算机→管理. 2.找到服务列表(计算机管理(本地)→服务和应用程序→服务). 3.找到 FlexBet Licensing Service服务 ...
- word中,解决插入形状后固定位置不变。
在office上的word中,如果插入形状后,默认"对象随文字移动".当出现文字或者图片的格式出现更换,该形状就会随着变化位置.或者将word转换为PDF格式后,形状也会出现位置变 ...
- 终于解决!图片随鼠标移动在FireFox下实现,另附一个好玩的图片随鼠标伸缩效果
不用left/top处理(用padding代替): <html> <head> <script type="text/javascript"> ...
- ie浏览器html图片兼容,解决webp图片格式IE浏览器不兼容性问题
这两天把博客,图片格式改了一下,今天晚上,正好用ie浏览器打开pdf文件,然后突然想起,试试这个浏览器的兼容性, 发现图片加载不出来了,报错了 无法对位于 URL"https://img.b ...
- chrome浏览器不能显示本地图片办法解决(图片预览)
近期开发项目时有个功能是实现图片预览,但是我将图片路径赋值给img标签的src时,预览的显示是这样的. 唉.我就郁闷了,再仔细一看,浏览器给我加了个路径啊. 这是什么鬼东西啊. 试了一下replace ...
- android无限轮播banner图片并且解决banner图片只有2张出现白板的情况,触摸即不轮播
//主页面代码 public class BannerActivity extends Activity { private ViewPager mViewPager; private Lin ...
- 使用VS Code 使用pygame加载不出图片;Python的pygame打不开图片,怎么解决?由于图片运行报错
首先,我开始也是打不开的,因为我是先用的Pycham转过来使用的,然后使用了VS也使用以下的代码,注意是pygame.image.load()这段程序 ''' @Description: In Use ...
- win打印显示打印服务器错误,由于打印机的当前设置有问题,windos无法打印_由于打印机设置word无法打印解决方法...
朋友们在日常办公时可能会遇到需要打印word文档的情况,但是有可能会出现一些错误,导致我们无法正常打印,例如由于打印机的当前设置有问题,windos无法打印的错误提示,那么为什么会出现这种情况呢?其实 ...
- 【Get深一度】Microsoft Office 2013 Word中图片插入后变模糊解决办法
Microsoft Office 2013 Word中图片插入后变模糊解决办法 作者在使用Word时发现插入的图片变模糊了,这个问题以前也经常遇到,只是从未上心过,这次花点心思解决一下,也给众多 ...
最新文章
- css3 动画 火箭,CSS3 火箭发射动画 寓意创新起航
- N个免费DevOps开源工具,没用过,至少应该了解!
- SQL Server 2000 Service Pack 4 中所修复的 bug 的列表
- angular2新手学习笔记(1)概述
- 如何在Spyder中运行spark
- 游戏与算法的必经之路
- nginx 知识点 :ctx_index and index
- Wget CVE-2014-4877:FTP 符号链接任意文件系统访问
- 使用JUnit的ExpectedException和@Rule测试自定义异常
- android代码移除焦点,android-如何从单个editText移除焦点
- Python钉钉报警及Zabbix集成钉钉报警
- 腾讯广告算法大赛 | 这是一篇雪中送炭的赛题宝典
- 交流信号叠加直流偏置_T型偏置器与隔直器,二者应用之对比
- HTML5 简介与安装
- sensor 驱动调试小结
- 打开计算机网络自动连接,电脑如何自动连接上网 开机自动拨号连接宽带的方法【步骤】...
- Linux Mint系统常用软件安装
- 四川托普计算机学校官网,四川中等职业技术学院
- Nginx_01_Nginx三大基础功能(静态服务器、虚拟主机、负载均衡/服务端代理)
- 计算机原理与应用 第二章——ARM处理器