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

相关推荐
zlinear数据采集卡16 小时前
数据采集卡从入门到精通(9):分辨率与精度——16位卡不等于1/65536的精度
开发语言·数据库·fpga开发·开源·c#
深澈Vincel19 小时前
我用 C# + WebView2 做了一个针对“流氓软件”的“一键清理工具“:架构实践与踩坑记录
c#
zlinear数据采集卡20 小时前
数据采集卡从入门到精通(7):流水线型ADC——级级接力,高速与高精的平衡术
开发语言·arm开发·嵌入式硬件·fpga开发·c#
ccino .20 小时前
awvs_json_word.py 使用说明手册
json·word
yuhulkjv33521 小时前
Grok鸿蒙版导出word格式的终极解法:AI导出鸭如何重构AI内容到文档的最后一公里
人工智能·ai·word·harmonyos·ai导出鸭
阿部多瑞 ABU21 小时前
告别手工核图:基于 .NET + MuPDFCore 的 CAD 等轴测 PDF 材料表提取与新旧版本对比实战
后端·算法·ui·pdf·c#
条形码D21 小时前
DRG综合管理分析系统-目前已经支持CHS-DRG3.0
c#·drg·3.0分组器·drg分组器·chs-drg3.0分组器
Alex Gram2 天前
数据库同步工具PanguSync图文教程
java·mysql·postgresql·sqlserver·c#·数据库同步软件·数据库同步工具
2601_965912912 天前
PDF转Word与拆分组合操作实测:从格式保真到批量处理的方案对比
pdf·word
头茬韭菜2 天前
第 10 篇:「Fluss 实战案例集」—— 完整解决方案与最佳实践
c#·linq·fluss