码迷,mamicode.com
首页 > 其他好文 > 详细

VSTO学习之路:使用CustomXMLPart存储数据

时间:2016-08-18 13:00:34      阅读:840      评论:0      收藏:0      [点我收藏+]

标签:

假设两种情形:

1、当有一些数据要使用,但不想让用户直接看到,常规的方式是放在一个表里,然后隐藏

2、当数据来自服务器、远端服务器,但文档要带到一个离线环境使用

此时可以考虑在工作簿中创建一个CustomXMLPart,要创建它非常简单,可以使用CustomXMLParts接口的Add方法创建CustomXMLPart,CustomXMLPart接口和CustomXMLParts接口定义在 using Microsoft.Office.Core; 命名空间下,其中CustomXMLPart的定义如下:

 1 public interface _CustomXMLParts : _IMsoDispObj, IEnumerable
 2 {         
 3          dynamic Application { get; }
 4          int Count { get; }
 5          int Creator { get; }
 6          dynamic Parent { get; }
 7          CustomXMLPart this[object Index] { get; }
 8          CustomXMLPart Add(string XML = "", object SchemaCollection = Type.Missing);
 9          IEnumerator GetEnumerator();
10          CustomXMLPart SelectByID(string Id);
11          CustomXMLParts SelectByNamespace(string NamespaceURI);
12 }

Add方法的一个重要参数是接收一个XML文本。

演示在文档级项目中创建CustomXMLPart

1、创建一个文档项目,Sheet1中有一个存放员工三险一金数据的表,准备将表格中的内容转换成XML存储在工作簿中。

技术分享

2、在项目中需要的地方调用下面的方法

 1 private void AddCustomXMLPart()
 2         {
 3             //将工作表区域数据转换为一个XML文本
 4             XElement xml = new XElement("Social",
 5                              from Excel.Range row in Globals.Sheet1.UsedRange.Rows
 6                              where row.Row != 1
 7                              select new XElement("Person",
 8                                     new XElement("姓名", GetValue(row.Cells[1])),
 9                                     new XElement("养老保险", GetValue(row.Cells[2])),
10                                     new XElement("医疗保险", GetValue(row.Cells[3])),
11                                     new XElement("失业保险", GetValue(row.Cells[4])),
12                                     new XElement("公积金", GetValue(row.Cells[5]))
13                                     ));
14             //CustomXMLParts的Add方法在工作簿实便中的具体实现
15             CustomXMLPart part = Globals.ThisWorkbook.CustomXMLParts.Add();
16             //重载方法,接收一个XML文本
17             //CustomXMLPart part = Globals.ThisWorkbook.CustomXMLParts.Add(xml.ToString());
18             //将XML文本传入CustomXMLPart的LoadXML方法
19             part.LoadXML(xml.ToString());
20         }
21         //取得Cells[i]的值并转为字符串
22 private string GetValue(Excel.Range rng)
23         {
24             object o = rng.Value;
25             return o.ToString();
26         }

 3、效果:

用压缩工具打开工作簿,会多出一个customXML文件夹:
技术分享

打开其中一个xml文件,可以看到内容已经以xml文本形式保存在了工作簿中:

技术分享

实际中,要保存到工作簿的CustomXMLPart中的数据,可能来源自数据库,或者直接来自其他地方的XML文本。

VSTO学习之路:使用CustomXMLPart存储数据

标签:

原文地址:http://www.cnblogs.com/zzstone/p/5783478.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!