OpenXML : C#操作word文档

Word文档,本身就是一个压缩包,使用压缩工具打开一个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文档的开发工具选项
在这里插入图片描述
word文档的开发工具菜单栏
在这里插入图片描述
下边简单说一下,如何找到文档中的一个的图片标记,并进行图片替换;

首先,在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);
}
} 

使用此SDK也可以进行文档中的文字,表格等数据的添加或者替换,具体可以参照API文档进行查看。

更多文章请关注公众号查看:
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值