学习C#调用OpenXml操作word文档的基本用法(17:学习文档图片类)

  OpenXml中使用ImagePart类保存Word文档内所有图片的二进制数据,为文档中的图片元素提供引用目标。采用解压缩软件打开Word文档,其内的word\media文件夹中保存图片文件,然后在word文件夹的document.xml文件内引用图片信息,如下图所示。

  MainDocumentPart类的ImageParts属性保存图片集合,其类型为IEnumerable<ImagePart>,ImagePart类存储单个图片对象,命名空间为DocumentFormat.OpenXml.Packaging。
  ImagePart类的ContentType属性保存图片格式(MIME type),如image/jpeg等,通过调用ImagePart.GetStream函数获取图片二进制流,同时通过调用MainDocumentPart.GetIdOfPart函数可以获取当前ImagePart实例对象在文档中的ID信息,以便查询或设置正文中的图片引用。
  下面的代码及截图用于获取word文档的图片列表并在线浏览图片内容:

csharp 复制代码
using (WordprocessingDocument document = WordprocessingDocument.Open(txtFilePath.Text, false))
{
    IEnumerable<ImagePart> iParts = document.MainDocumentPart.ImageParts;
    if (iParts != null && iParts.Count() > 0)
    {
        foreach (ImagePart part in iParts)
        {
            ListViewItem item = new ListViewItem(Convert.ToString(lstImages.Items.Count + 1));
            item.SubItems.Add(part.RelationshipType);
            item.SubItems.Add(part.ContentType);
            item.SubItems.Add(document.MainDocumentPart.GetIdOfPart(part));            

            using (MemoryStream ms = new MemoryStream())
            {
                part.GetStream().CopyTo(ms);
                item.Tag = Image.FromStream(ms);
            }

            lstImages.Items.Add(item);
        }
    }
}

参考文献

1https://github.com/dotnet/Open-XML-SDK

2https://learn.microsoft.com/zh-cn/office/open-xml/open-xml-sdk

3https://learn.microsoft.com/zh-cn/dotnet/api/documentformat.openxml.wordprocessing.style?view=openxml-3.0.1

4https://blog.csdn.net/i042416/article/details/126228816

相关推荐
苍狼唤12 小时前
WinForm练习知识补充(多线程)
c#
逝水无殇15 小时前
C# 字符串(String)详解
开发语言·后端·c#
小巧的砖头17 小时前
C#会重蹈覆辙吗?系列之2:反射及元数据的性能问题
开发语言·前端·c#
俊哥工具19 小时前
解决文件正在使用无法删除,顽固文件清理工具超好用
智能手机·电脑·word·音视频·媒体
医疗信息化王工20 小时前
从零到一:基于 GGUF 格式部署 Unlimited-OCR 搭建企业级证件识别服务
图像处理·c#·ocr
zyh______21 小时前
C#语法糖(按照实用性排序)
unity·c#
沉默的云朵1 天前
NET平台下不借助Office实现Word、Powerpoint等文件的解析(一)
word·powerpoint
z落落1 天前
C#五大加密算法(AES、DES、MD5、RSA、SHA)
开发语言·c#
孝顺的书包1 天前
将《C# 调用非托管程序》一文中最后一种方法修改如下(篇幅原因简化了注释):
开发语言·c#
辰三1 天前
统信 UOS + GBase 8s 国产化环境部署实战:从虚拟机到数据库连接完整指南
linux·c#