全文转载自:http://msdn.microsoft.com/zh-cn/library/bb669125.aspx

本主题显演示一个打开、修改和保存 Office Open XML 文档的示例。

有关 Office Open XML 的更多信息,请参见 www.openxmldeveloper.org(可能为英文网页)。

示例

本示例查找文档中的第一个段落元素。 示例从段落中检索文本,然后删除段落中的所有文本域。 它创建一个由第一个段落已转换为大写的文本构成的新文本域。 然后将已更改的 XML 序列化为 Open XML 包并关闭该包。

本示例使用 WindowsBase 程序集中的类。 它使用 System.IO.Packaging 命名空间中的类型。

public static class LocalExtensions
{public static string StringConcatenate(this IEnumerable<string> source){StringBuilder sb = new StringBuilder();foreach (string s in source)sb.Append(s);return sb.ToString();}public static string StringConcatenate<T>(this IEnumerable<T> source,Func<T, string> func){StringBuilder sb = new StringBuilder();foreach (T item in source)sb.Append(func(item));return sb.ToString();}public static string StringConcatenate(this IEnumerable<string> source, string separator){StringBuilder sb = new StringBuilder();foreach (string s in source)sb.Append(s).Append(separator);return sb.ToString();}public static string StringConcatenate<T>(this IEnumerable<T> source,Func<T, string> func, string separator){StringBuilder sb = new StringBuilder();foreach (T item in source)sb.Append(func(item)).Append(separator);return sb.ToString();}
}class Program
{public static string ParagraphText(XElement e){XNamespace w = e.Name.Namespace;return e.Elements(w + "r").Elements(w + "t").StringConcatenate(element => (string)element);}static void Main(string[] args){const string fileName = "SampleDoc.docx";const string documentRelationshipType ="http://schemas.openxmlformats.org/officeDocument/2006/relationships/officeDocument";const string stylesRelationshipType ="http://schemas.openxmlformats.org/officeDocument/2006/relationships/styles";const string wordmlNamespace ="http://schemas.openxmlformats.org/wordprocessingml/2006/main";XNamespace w = wordmlNamespace;using (Package wdPackage = Package.Open(fileName, FileMode.Open, FileAccess.ReadWrite)){PackageRelationship docPackageRelationship =wdPackage.GetRelationshipsByType(documentRelationshipType).FirstOrDefault();if (docPackageRelationship != null){Uri documentUri = PackUriHelper.ResolvePartUri(new Uri("/", UriKind.Relative),docPackageRelationship.TargetUri);PackagePart documentPart = wdPackage.GetPart(documentUri);//  Load the document XML in the part into an XDocument instance.XDocument xDoc = XDocument.Load(XmlReader.Create(documentPart.GetStream()));//  Find the styles part. There will only be one.PackageRelationship styleRelation =documentPart.GetRelationshipsByType(stylesRelationshipType).FirstOrDefault();PackagePart stylePart = null;XDocument styleDoc = null;if (styleRelation != null){Uri styleUri = PackUriHelper.ResolvePartUri(documentUri, styleRelation.TargetUri);stylePart = wdPackage.GetPart(styleUri);//  Load the style XML in the part into an XDocument instance.styleDoc = XDocument.Load(XmlReader.Create(stylePart.GetStream()));}XElement paraNode = xDoc.Root.Element(w + "body").Descendants(w + "p").FirstOrDefault();string paraText = ParagraphText(paraNode);// remove all text runsparaNode.Descendants(w + "r").Remove();paraNode.Add(new XElement(w + "r",new XElement(w + "t", paraText.ToUpper())));//  Save the XML into the packageusing (XmlWriter xw =XmlWriter.Create(documentPart.GetStream(FileMode.Create, FileAccess.Write))){xDoc.Save(xw);}Console.WriteLine("New first paragraph: >{0}<", paraText.ToUpper());}}}
}
本文由作者:陈希章 于 2009/7/16 10:54:50 发布在:http://www.cnblogs.com/chenxizhang/
本文版权归作者所有,可以转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。
更多博客文章,以及作者对于博客引用方面的完整声明以及合作方面的政策,请参考以下站点:陈希章的博客中心

转载于:https://www.cnblogs.com/chenxizhang/archive/2009/07/16/1524655.html

如何:修改 Office Open XML 文档【转载】相关推荐

  1. Office Open XML 文档格式

    Office Open XML文档格式的详细说明以及规格是在2006年欧洲计算机制造商协会批准的一项标准, 编号是Ecma376, 到发稿时为止已经通过了ISO国际标准化组织的评审成为了一项国际标准I ...

  2. 使用JAXP对xml文档进行DOM解析基础

    XML解析方式分为两种:dom和sax         dom:(Document Object Model, 即文档对象模型) 是 W3C 组织推荐的处理 XML 的一种方式.        sax ...

  3. 掌握XML系列(四)---创建格式良好的XML文档

    掌握XML系列(四)---创建格式良好的XML文档 前言:创建良好格式的XML文档,虽然写了这些,其实,等到大家真正的看完之后美酒会发现,其实也很简单的,我们这里所做的是带着大家全面的看看怎么样创建. ...

  4. xml文件怎么转换成wps_xml文件转word文档 怎么将XML文档转成WORD文档

    1.找到需要转换为word文档的xml文档. 2.选择文档并点击鼠标右键,选择"打开方式"栏目中的"WPS表格"(或者excel表格),点击确定按钮. 3.点击 ...

  5. 对Xml文档进行操作(修改,删除)

    <?xml version="1.0" encoding="utf-8"?> <Products>   <Product id=& ...

  6. libxml2如何配合php使用,libxml2实现xml文档的节点的修改

    其实在网上很容易能找到使用libxml2来对xml文档进行创建.解析.修改等.我着这里主要是就自己学习的libxml2修改xml文档的节点进行一个简单的总结,方便自己以后回顾. 下面给出我写的一个例子 ...

  7. xml批量修改php,通过php修改xml文档内容的方法

    本文实例讲述了通过php修改xml文档内容的方法,.具体实现方法如下: 代码如下:<?php //1.创建一个DOMDocument对象.该对象就表示 xml文件 $xmldoc = new D ...

  8. C#读取与修改XML文档

    在项目开发中,对XML文档的操作是很常用的,这里,简单的说明读取与修改XML文档 XML文档的格式 <?xml version="1.0" encoding="ut ...

  9. java jdom 更新xml_Java中使用JDOM来修改XML文档(续前)

    22.3.2 使用JDOM来处理XML文档 本节介绍使用JDOM来处理之前建立的XML文档"customer.xml",包括添加.删除以及修改XML文档中的元素.步骤如下. (1) ...

最新文章

  1. 机房收费系统总结【2】-细节优化
  2. [转]浅谈:国内软件公司为何无法做大做强
  3. 在 ASP.NET 使用 jQuery BlockUI 插件
  4. 14.结构体struct.rs
  5. deb php7 fileinfo,linux安装php7.2扩展fileinfo
  6. 信息学奥赛一本通(1003:对齐输出)
  7. 【PHP学习】—get请求传递参数(五)
  8. 组合式应用新利器,事件网格“出圈”
  9. mysql did not start_mysql 服务无法启动
  10. 除自身以外数组的乘积leetcode 238
  11. win hook codeproject
  12. COGS 2075. [ZLXOI2015][异次元圣战III]ZLX的陨落
  13. 【音视频—基础】分辨率、码率和帧率
  14. 安卓圆形头像制作两种方法。
  15. 分享两篇适合程序员看的书籍——《谁动了我的奶酪》、《你的灯亮着吗?》读后感
  16. SQL基础编程——介绍及基本语法了解
  17. XTU Oj 128
  18. POJ1608 Banal Tickets
  19. 计算机组装机配置单2019,2019年电脑主流配置
  20. 软件设计之“信雅达”

热门文章

  1. Linux复习资料——CentOS7下安装MySQL5.7.22(完整版本)
  2. JSP和Servlet的六种中文乱码处理方法
  3. MySQL BlackHole 存储引擎使用
  4. Nginx在Windows上启动、停止的命令
  5. CodeForces 567F DP Mausoleum
  6. 如何用C#检查硬盘是否是固态硬盘SSD
  7. C++强制类型转换操作符 dynamic_cast
  8. ssh_askpass: exec(/usr/libexec/ssh-askpass): No such file or directory
  9. [转]桌面任务栏时间显示为yyyy-M-d,
  10. winfrom水晶报表的创建