C# VBA 提取word中图片方法

想要完整提取word文件中的图片,VBA宏中并没有相应的方法,在网络中能找的方法一般就2种,一种是另存为网页,然后在files文件夹下会自动产生图片,此方法有弊端,当一个图片重复使用则只会保存一份,当然这其实正常,而且是按照浏览顺序产生的文件名,如图中所示:
另存为网页文件夹
这种还是比较简单的图片类型,但是如果你有需要顺序数据的需求的话,重复的图片会导致index错误。所以记录一种单独提取图片的方法,代码如下:

                int picindex = 0;
                foreach (Word.InlineShape item in _doc.InlineShapes)
                {
                    if (item.Type == Word.WdInlineShapeType.wdInlineShapePicture ||
                        item.Type == Word.WdInlineShapeType.wdInlineShapeLinkedPicture)
                    {
                        FileStream fstream = new FileStream($@"{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);
                    }
                }

遍历文档中的所有图片,以流的方式单独保存还可以自定义文件名,这里需要注意!必须添加延迟等待,因为需要等文档预加载完毕通过流传输的图片才正确,如果不添加延迟等待图片会丢失,固态硬盘可以忽略。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值