想要完整提取word文件中的图片,VBA宏中并没有相应的方法,在网络中能找的方法一般就2种,一种是另存为网页,然后在files文件夹下会自动产生图片,此方法有弊端,当一个图片重复使用则只会保存一份,当然这其实正常...
想要完整提取word文件中的图片,VBA宏中并没有相应的方法,在网络中能找的方法一般就2种,一种是另存为网页,然后在files文件夹下会自动产生图片,此方法有弊端,当一个图片重复使用则只会保存一份,当然这其实正常,而且是按照浏览顺序产生的文件名,如图中所示:
这种还是比较简单的图片类型,但是如果你有需要顺序数据的需求的话,重复的图片会导致index错误。所以记录一种单独提取图片的方法,代码如下:
int picindex=0;foreach(Word.InlineShape itemin _doc.InlineShapes){if(item.Type== Word.WdInlineShapeType.wdInlineShapePicture|| item.Type== Word.WdInlineShapeType.wdInlineShapeLinkedPicture){FileStream fstream=newFileStream($@"{TempPath}\{picindex}.emf", FileMode.Create, FileAccess.Write);var buffer=(byte[])item.Range.EnhMetaFileBits; fstream.Write(buffer,0, buffer.Length); fstream.Close(); imageList.Add($@"{TempPath}\{picindex}.emf"); picindex++; Thread.Sleep(200);}}
遍历文档中的所有图片,以流的方式单独保存还可以自定义文件名,这里需要注意!必须添加延迟等待,因为需要等文档预加载完毕通过流传输的图片才正确,如果不添加延迟等待图片会丢失,固态硬盘可以忽略。
我的一个项目中需要用C#编程修改Word模版,搜索了很多都没有说清楚,自己摸索了一下,终于完成了,在此记下来与大家分享。 包括文本替换和填充表格两种常用功能。 第一步制作模版文件 将用户提供的Word文档...