使用OpenXml打开word文档中嵌入的另一个文档

        今天在写字处理评分程序的时候遇到一个之前没有经历过的场景:在给定的字处理素材文档文档中嵌入了另一个字处理文档,题目要求既要对素材文档进行修改,也要对嵌入的文档进行格式调整。打开嵌入的文档对于操作者来说非常容易,只需双击嵌入文档的图标就可以了。但是,对于程序来说就不是那么好办了。之前都是使用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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/467250.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

ANSI是什么编码?

原文:http://www.cnblogs.com/malecrab/p/5300486.html用Notepad创建一个文本文件text.txt,其默认编码格式为ANSI(乍看之下,还以为是ASCII呢),输入汉字居然不是乱码:保存为test.txt,…

Run ASMX Without IIS

http://msdn.microsoft.com/msdnmag/issues/04/12/ServiceStation/default.aspxExcellent, but how about on PDA? I need a SOAP Server running on PDA:( 转载于:https://www.cnblogs.com/swnuwangyun/archive/2006/11/16/562499.html

R语言数据分析过程

R语言数据分析前期&#xff1a;预处理过程&#xff0c;供自己查阅&#xff0c;欢迎大家指正。 利用R语言导入数据&#xff1a; taobao<-read.csv("taobao.csv",stringsAsFactors F) 我最常用到就是read.csv&#xff0c;其中stringsAsFactorsF很重要&#xff0c;不…

苏州,遇见NXP痞子衡

昨天的文&#xff0c;今天发--晚上打球照片&#xff0c;大家都是1.8的&#xff0c;结果拍出来变矮了因为公司项目问题&#xff0c;今天飞苏州&#xff0c;昨晚上就得到了命令&#xff0c;早上直接从家里开拔&#xff0c;这次去苏州提前跟痞子衡说了情况&#xff0c;原因是上次我…

计算机组成原理节拍分为几种,计算机组成原理习题答案第七章

计算机组成原理题答案,计算机组成原理,习题答案&#xff11; &#xff0e;控制器有哪几种控制方式&#xff1f; 各有何特点&#xff1f;解&#xff1a;控制器的控制方式可以分为&#xff13; 种&#xff1a;同步控制方式、异步控制方式和联合控制方式。同步控制方式的各项操作都…

Android中GC的触发时机和条件

本文分析基于Android R(11)源码Java对象的创建由Allocator负责&#xff0c;回收由Collector负责。从Android O开始&#xff0c;对于前台应用默认的GC Collector是CC(Concurrent Copying) Collector&#xff0c;与之相匹配的Allocator则是Region-based Bump Pointer Allocator(w…

java console 到文件

System.setOut(new PrintStream(new FileOutputStream("c:\\temp\\test1.txt"))); System.out.println(x);转载于:https://www.cnblogs.com/kakaisgood/p/7910620.html

计算机安全可靠替代工程,基于安全可靠软硬件的党政军OA系统的整系统优化方法与研究-计算机技术专业论文.docx...

万方数据万方数据摘要“十二五”期间&#xff0c;基于国家重大科技专项“核高基”前一阶段的基础软硬件产 品技术成果&#xff0c;以应用示范为牵引&#xff0c;全面验证、推广“十一五”“核高基”成果成为 工作重点和主题。由于国产关键基础软硬件产品不成熟以及缺乏系统性的…

使用.NET读取XML文件

介绍 本文中我将介绍在ASP.NET应用程序中如何读取XML文件&#xff0c;这是一个十分有用的技巧。使用这个技巧&#xff0c;我们能够定制我们的应用程序的配置文件&#xff0c;也可以读取那些保存在XML文件中的数据。 概论 下面的代码将使用XmlTextReader对象将磁盘文件中的数据读…

【华为出品】物联网全栈开发实战营第2期来啦!送海思开发板

物联网一直在改变我们生活的方方面面。可穿戴设备有助于监控我们的偏好、习惯和健康状况。智能家居设备可提高家居的舒适度、安全性和便利性。城市利用连接的数字设备收集的海量数据(数十亿个)来改善城市规划。制造商使用工业物联网设备来优化工厂车间的操作。据MarketsandMark…

2017年12月计算机一级c,2017年12月计算机二级C语言考试操作题冲刺卷(2)

三. 程序设计题3 [简答题]请编写函数fun&#xff0c;其功能是&#xff1a;移动一维数组中的内容&#xff0c;若数组中有n个整数&#xff0c;要求把下标从0&#xff5e;P(含P&#xff0c;P小于等于n-1)的数组元素平移到数组的最后。例如&#xff0c;一维数组中的原始内容为&…

6. Nginx + PHP + FastGCI安装

LNAMP Linux Nginx Apache Mysql PHP Nginx PHP&#xff08;fast CGI&#xff09; 可以理解为一个php加速的一个接口 Php-fpm 可以实现fastcgi协议需要的进程池&#xff0c;php-fpm实现的fastcgi进程叫php-cgi&#xff0c;所以php-fmp其实是他自身的fastcgi 或 php-cgi进程管理…

培训游戏(34个)

培训游戏(34个) 目 录 1. 造房子 2. 摔鸡蛋 3. 结网托物 4. 盲人移物 5. 搭纸牌 6. 九点游戏 7. 剪纸圈 8. Trust Fall 9. 商店打烊 10. 海上救生 11. Win As Much As Possible 12. 沙漠幸存者 13. 看FLY 14. 找方块 15. 中国人-美国人 16. 画画 17. 猜图形 …

给楠哥准备的入门单片机

---- 少儿编程前几天&#xff0c;珠海的三哥的老婆微信问我「我想给wending报名这个少儿编程课程&#xff0c;你帮我看看怎么样&#xff1f;」我看了下&#xff0c;除了价格还可以&#xff0c;其他都不怎么样&#xff0c;因为报名了这个课程&#xff0c;大家都知道你们家挺有钱…

计算机老师教师节祝福语,送给老师教师节祝福语

1、能使艰难之事变得容易的人是教育者。2、老师的教诲催我风雨兼程&#xff0c;我的祝福伴您昼夜耕耘。祝你教师节快乐&#xff01;3、您的辛劳是我们的动力&#xff0c;我们的成功是您的骄傲&#xff0c;然而我们会为您自豪&#xff01;&#xff01;4、老师就像航海的指标&…

JavaScript初阶(二)

编程形式的区别 编程语言按形式上分为两类&#xff0c;第一是面向过程&#xff0c;第二是面向对象。 面向过程&#xff1a;每一步我们该怎么做&#xff0c;如C语言 面向对象&#xff1a;包含面向过程&#xff0c;但更重要的是用什么方法处理&#xff0c;结构化更强。 显示类型转…

应届生昆山offer和上海户口offer要如何选择?

这两天还在苏州&#xff0c;没有感受苏州的什么好地方&#xff0c;天气有点微凉&#xff0c;有秋天的味道&#xff0c;同行的何总是一个很闷的人&#xff0c;我总想让他跟我说说故事&#xff0c;每次他都说「我是一个没有故事的男人」&#xff0c;是的&#xff0c;一个从毕业就…

html5--3.7 input元素(6)

html5--3.7 input元素(6) 学习要点 input元素及其属性input元素 用来设置表单中的内容项&#xff0c;比如输入内容的文本框&#xff0c;按钮等不仅可以布置在表单中&#xff0c;也可以在表单之外的元素使用input元素的属性 type属性&#xff1a;指定输入内容的类型&#xff0c;…

计算机or笔记本,笔记本or台式机?大学生第一个烦恼被它解决了

原标题&#xff1a;笔记本or台式机&#xff1f;大学生第一个烦恼被它解决了台式电脑还是笔记本&#xff1f;许多大学生在选择第一台大学电脑的时候都会面临这个问题。初秋的风带着点点凉意悄然走进了大学校园&#xff0c;开学季来临&#xff0c;又一批莘莘学子即将满怀青春的梦…

把编译时间加入到目标文件

原文&#xff1a;https://www.cnblogs.com/pingwen/p/8183728.html1、问题背景&#xff1a;如何保证发布出去的bin文件是最终测试通过的版本&#xff1f;一般的来讲&#xff0c;代码到了测试后期&#xff0c;master分支就不会频繁的提交了&#xff0c;并且提交也会更加谨慎。但…