本地wordpress外网访问,优化网站加载速度,一个人可以做几个网站负责人,网站建设维护培训班今天在写字处理评分程序的时候遇到一个之前没有经历过的场景#xff1a;在给定的字处理素材文档文档中嵌入了另一个字处理文档#xff0c;题目要求既要对素材文档进行修改#xff0c;也要对嵌入的文档进行格式调整。打开嵌入的文档对于操作者来说非常容易#xff0c;只需双… 今天在写字处理评分程序的时候遇到一个之前没有经历过的场景在给定的字处理素材文档文档中嵌入了另一个字处理文档题目要求既要对素材文档进行修改也要对嵌入的文档进行格式调整。打开嵌入的文档对于操作者来说非常容易只需双击嵌入文档的图标就可以了。但是对于程序来说就不是那么好办了。之前都是使用OpenXml的Packaging命名空间下的WordprocessingDocument类来直接open需要检查的文档。方式是将文档的路径当做参数传入Open函数这里的路径是物理路径可以是相对路径也可以使绝对路径。但是现在这个文档不存在于物理介质中而是嵌入在另一个文档中怎么打开 一开始思考的解决方式是将嵌入文档的内容读取出来然后写入到一个新文件中。新文件保存在当前路径下然后再使用WordprocessingDocument类的Open方法来打开。但是试了很长时间也得不到想要的结果。可能是我对文件和流操作这块概念比较混乱感觉代码逻辑很凌乱。后来偶尔发现Open方法的重载版本里有一个是基于流的方式来打开文件的呵呵真是踏破铁鞋无觅处得来全不费功夫。首先嵌入的文档是一个EmbeddedPackagePart对象该对象有个GetStream方法。现在只需把GetStream方法返回的流传入WordprocessingDocument类的Open方法即可打开对应的文档并获得一个WordprocessingDocument对象的引用利用这个引用就可以对这个嵌入的文档进行各种操作了局部代码如下 1 using(WordprocessingDocument wd WordprocessingDocument.Open(path, false))2 {3 MainDocumentPart mdp wd.MainDocumentPart;4 EmbeddedPackagePart epp mdp.EmbeddedPackageParts.FirstOrDefault();5 6 WordprocessingDocument embedDoc WordprocessingDocument.Open(epp.GetStream(),false);7 ...... 8 embedDoc.SaveAs(hehe.docx);9
10 } 首先打开主文档然后在主文档中获取嵌入文档的对象引用这里是一个 EmbeddedPackagePart对象。然后调用GetStream()方法获取对应的流传入WordprocessingDocument.Open方法即可打开对应的嵌入文档。最后可以调用SaveAs把这个嵌入文档另存为以一个单独的文件保存。 后记 看完整个题目要求才发现最终会要求考生将嵌入的文档另存为一个单独命名的文档好吧白瞎了。 转载于:https://www.cnblogs.com/zhang-15-506/p/7908689.html