温馨提示×

温馨提示×

您好,登录后才能下订单哦!

密码登录×
登录注册×
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》

C#中怎么利用OpenXML操作Word文档

发布时间:2021-07-07 15:41:06 来源:亿速云 阅读:779 作者:Leah 栏目:大数据

C#中怎么利用OpenXML操作Word文档,相信很多没有经验的人对此束手无策,为此本文总结了问题出现的原因和解决方法,通过这篇文章希望你能解决这个问题。

 OpenXML是微软官方一个开源的操作Word、Excel和PPT的SDK,用C#进行开发,使用此类库可以方便的对office这三类主要文档进行操作,而且还不用安装Office程序。

以下代码为打开一个word文档:

//WordprocessingDocument打开一个文档,_filePath为文档的路径

 using (WordprocessingDocument _doc = WordprocessingDocument.Open(_filePath, true))

  { 

  //文档的主体部分

    Body bod = _doc.MainDocumentPart.Document.Body;

 //文档中的内容部分

    _mainDocPart = _doc.MainDocumentPart; 

   } 

点击word文档的选项,可以打开word的开发工具模式,能够在文档中添加一些标记,从而对word文档中的内容进行开发。

勾选word文档的开发工具选项

C#中怎么利用OpenXML操作Word文档

word文档的开发工具菜单栏

C#中怎么利用OpenXML操作Word文档

下边简单说一下,如何找到文档中的一个的图片标记,并进行图片替换;

首先,在word文档中,添加一个图片标记,使用开发工具=》控件=》图片内容控件,在弹出的窗口中,在标记栏中添加唯一的可标示字符串;

C#中怎么利用OpenXML操作Word文档

C#中怎么利用OpenXML操作Word文档

添加完控件后,在C#程序中,通过Descendants的Linq搜索,找到文档中所有的标记,再根据标记进行外部图片的替换。

 using (WordprocessingDocument _doc = WordprocessingDocument.Open(_filePath, true))

  { 

  //文档的主体部分

    Body bod = _doc.MainDocumentPart.Document.Body;

 //文档中的内容部分

    _mainDocPart = _doc.MainDocumentPart; 

//查找所有的标记元素

 var _sdtList = bod.Descendants<SdtElement>();

//根据标记的名称,查找文档中的元素

 var _evEle= _sdtList .FirstOrDefault(p => p.SdtProperties.GetFirstChild<Tag>().Val.ToString().Contains("唯一标记"));

//找到Blip,这是指向文件的标示码

DocumentFormat.OpenXml.Drawing.Blip ImageBlip = _evEle.Descendants<DocumentFormat.OpenXml.Drawing.Blip>().FirstOrDefault();

//从文档中找到图片

var imagePart = (ImagePart)_mainDocPart.GetPartById(ImageBlip.Embed.Value);

//替换成外部的图片,_basePath为外部图片的路径

 using (FileStream fs = File.Open(_basePath, FileMode.Open))

   {

   imagePart.FeedData(fs);

    }

  } 

看完上述内容,你们掌握C#中怎么利用OpenXML操作Word文档的方法了吗?如果还想学到更多技能或想了解更多相关内容,欢迎关注亿速云行业资讯频道,感谢各位的阅读!

向AI问一下细节

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

AI