Spire.Doc for .NET
Visual Studio
在E-iceblue官网或者Nuget网站上下载 Spire.Doc for .NET的安装包后,注意在编辑代码时,添加引用Spire.Doc.dll到程序。dll文件可在安装路径下的Bin文件夹中获取。
测试文档 如下:
using Spire.Doc;using Spire.Doc.Documents;using Spire.Doc.Fields;using System.Drawing;using System.IO; namespace EditOLE_Doc{ class Program { static void Main(string[] args) { //实例化一个Document对象,加载含有OLE的Word文档 Document doc = new Document(); doc.LoadFromFile('test.docx'); //获取第一个Section Section sec = doc.Sections[0]; //遍历这个Section中的所有子元素,找到段落下的OLE对象 foreach (DocumentObject obj in sec.Body.ChildObjects) { if (obj is Paragraph) { Paragraph par = obj as Paragraph; foreach (DocumentObject paraObj in par.ChildObjects) { //找到OLE对象,根据类型来进行更改操作 if (paraObj.DocumentObjectType == DocumentObjectType.OleObject) { DocOleObject Ole = paraObj as DocOleObject; //如果是链接, 修改对象的链接路径 if (Ole.LinkType == OleLinkType.Link) { //同时还要手动去更改OLE的图片 DocPicture pic = Ole.OlePicture; pic.LoadImage(Image.FromFile('Img.png')); Ole.LinkPath = @'sample.docx'; } //如果是嵌入,更改数据即可 byte[] bys = File.ReadAllBytes(@'sample.docx'); if (Ole.LinkType == OleLinkType.Embed) { DocPicture pic = new DocPicture(doc); pic.LoadImage(Image.FromFile(@'Img.png')); Ole.ObjectType = 'Word.Document.12'; Ole.SetOlePicture(pic); Ole.SetNativeData(bys); } } } } } //保存修改后的文档,并打开 doc.SaveToFile('修改OLE.docx', Spire.Doc.FileFormat.Docx2010); System.Diagnostics.Process.Start('修改OLE.docx'); } }}
调试运行程序后,生成文档。打开文档时,生成的文档中原有的插入OLE的图片和链接的文档都已经更改了,如下所示: