学习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

相关推荐
mldong6 小时前
C# 开发者也有自己的轻量工作流引擎了:NuGet 装包,5 分钟跑通一条审批流
后端·c#·.net
samble10 小时前
从零搭建工业控制系统(二十二):线程安全与并发控制
c#·wpf·并发·mvvm·线程安全·工业控制
UIU11411 小时前
scanf与cout的误区:探究其内部的机制
c++·学习·c#·scanf
风云12 小时前
MiniLog 1.0 GA 发布:零分配、零依赖的 .NET 高性能日志框架
开源·c#·.net·日志·高性能·minilog
慧都小妮子13 小时前
C# 工程图纸数字化入库实战:Aspose.Imaging 自动抠图、多页 TIFF 合卷与坏页容错
图像处理·c#·.net·aspose·tiff·归档·文档管理
samble17 小时前
从零搭建工业控制系统(二十一):状态管理系统——中心状态对象设计
c#·wpf·mvvm·状态管理·工业控制
俊昭喜喜里19 小时前
C#中的func<>
java·前端·c#
highreport19 小时前
net报表工具对比:HighReport 与 FastReport
java·c#
reasonsummer20 小时前
【办公类-146-05】20260901《一分园、二分园四大教育》(优化版:标题excle+复制AI文字+Python占位符录入)
开发语言·数据库·c#
CSDN_RTKLIB20 小时前
C#可选参数时重载
c#