如何在open xml excel 中存储自定义xml数据?
如何在open xml excel 中存储自定义xml数据?
而且不能放在隐藏的cell单元格内,也不能放在隐藏的sheet内,要类似web网站的Application变量,但还不能是VBA和宏之类的,要对用户不可见,但是对开发者可见。
曾经试过两个方法:
1.在styles.xml或sheet1.xml中的Extension (extLst/ext)节点下添加自定义节点,用来存储自己的数据。
具体xml节点如下:
<extLst>
<ext uri="{EB79DEF2-80B8-43e5-95BD-54CBDDF9020C}" xmlns:x14="http://schemas.microsoft.com/office/spreadsheetml/2009/9/main">
<x14:slicerStyles defaultSlicerStyle="SlicerStyleLight1"/>
</ext>
</extLst>
Worksheet的xml里可以有extLst,stylesheet的xml里也可以有extLst,但Worksheet里的不知道怎么用,常见的是在stylesheet里.
虽然Extension (extLst/ext)节点貌似是供扩展数据使用的,但是当使用excel打开此文件并保存时,此自定义节点因为不是excel内置的内容就被清掉了,不能达到目的。
这个地方始终没搞太明白它究竟能做什么?不能做什么?如果哪位兄弟知道,还盼给讲解一下,下面是msdn上相关的链接:
ExtensionList Class
Defines the ExtensionList Class.When the object is serialized out as xml, its qualified name is x:extLst.
Extension Class
Extension. When the object is serialized out as xml, its qualified name is x:ext.
http://msdn.microsoft.com/en-us/library/office/documentformat.openxml.spreadsheet.extension.aspx
2.使用customed defined xml。
从Open Xml架构图入手,发现Custom Defined XML或许可用,如下图:
从msdn的文章 (Custom XML Parts Overview http://msdn.microsoft.com/en-us/library/vstudio/bb608618(v=vs.100).aspx) 中摘到:
"You can embed XML data in documents for some Microsoft Office applications. When you embed XML data in a document, the data is named a custom XML part.
You can create and modify custom XML parts in a document by using an application-level or document-level solution in Visual Studio. You do not need to start the Microsoft Office application to create and modify custom XML parts."
可见,我们是可以把任意内容的xml文件,塞到open xml excel中去,作为一个应用程序级别变量使用,类似web站点的Application变量。
第一步:创建下面这个xml文件或内存,里面只有一个ShowAlert变量:
<?xml version='1.0' encoding='UTF-8' ?>
<Root>
<Extension1 ShowAlert='false' />
</Root>
第二步:将它load进入open xml excel中。
第三步:在自己的代码中查找已经解析并加载进来的xml内容,找到ShowAlert变量,这就达到目的了。
如果之后另存为excel文件,则open xml的目录结构如下,多了customXml目录,该目录里的item1.xml存放的就是刚才的xml内容。
这里没有贴上第二步,第三步的代码,以后再补吧!
推荐资料:
Standard ECMA-376 Office Open XML File Formatsedition (December 2006), 2nd edition (December 2008), 3rd edition (June 2011) and 4th edition (December 2012)
http://www.ecma-international.org/publications/standards/Ecma-376.htm
OFFICE OPEN XML OVERVIEW
http://www.ecma-international.org/news/TC45_current_work/OpenXML%20White%20Paper.pdf
Introducing the Office (2007) Open XML File Formats
http://msdn.microsoft.com/en-us/library/aa338205.aspx
Office Open XML, ECMA-376, and ISO/IEC 29500
http://msdn.microsoft.com/en-us/library/office/gg607163(v=office.14).aspx
What is the best way to store XML data in an Excel file
http://stackoverflow.com/questions/4443026/what-is-the-best-way-to-store-xml-data-in-an-excel-file
如何在open xml excel 中存储自定义xml数据?的更多相关文章
- 在配置文件(.settings、.config)中存储自定义对象
原文:在配置文件(.settings..config)中存储自定义对象 引言 我前面曾写过一篇<使用配置文件(.settings..config)存储应用程序配置>,我在其中指出“sett ...
- excel中存储的icount,赋值完之后
最近需要实现一个功能,为了确保每次函数运行的时候count是唯一的,所以想读取excel中存储的icount,赋值完之后对其进行+1操作,并存入excel文件,确保下次读取的count是新的,没有出现 ...
- C#程序中:如何修改xml文件中的节点(数据)
要想在web等程序中实现动态的数据内容给新(如网页中的Flash),不会更新xml文件中的节点(数据)是远远不够的,今天在这里说一个简单的xml文件的更新,方法比较基础,很适合初学者看的,保证一看就懂 ...
- Excel中的一列数据变成文本的一行数据
Excel中的一列数据变成文本的一行数据 作者:凯鲁嘎吉 - 博客园 http://www.cnblogs.com/kailugaji/
- java通过poi读取excel中的日期类型数据或自定义类型日期
Java 读取Excel表格日期类型数据的时候,读出来的是这样的 12-十月-2019,而Excel中输入的是 2019/10/12 或 2019-10-12 poi处理excel时,当excel没 ...
- Winform中对自定义xml配置文件进行Xml节点的添加与删除
场景 Winform中自定义xml配置文件后对节点进行读取与写入: https://blog.csdn.net/BADAO_LIUMANG_QIZHI/article/details/10053213 ...
- 如何利用excel中的数据源制作数据地图
关于这个问题,制作数据地图的方法已不新奇,总体来说有这么几类方案: 一类方案:直接在excel里制作 优势:个人小数据量应用较为方便简单 缺点:需要熟悉VBA,且更强大的功能对VBA水平要求较高 1. ...
- C#程序中:如何向xml文件中插入节点(数据)
向xml文件中动态的添加节点(数据)是一件很爽的事,可以给你的程序带来很多的方便,比如在web中,如果你的Flash用到了xml文件,这个方法可以让你在后台就轻轻松松的更新你的Flash内容哦!一起研 ...
- struts.xml文件中配置tiles.xml
Apache Tiles是一个JavaEE应用的页面布局框架.Tiles框架提供了一种模板机制,可以为某一类页面定义一个通用的模板,该模板定义了页面的整体布局.布局由可以复用的多个块组成,每个页面可以 ...
随机推荐
- SQL与SQL Server
SQL--关系数据库的国际标准语言. SQL Server--著名的数据库管理系统.其他著名的数据库管理系统还有Oracle.Sybase等,它们都实现了SQL语言. 在SQL中,完成所有核心功能 ...
- Linux内核配置:Makefile目标
在顶层Linux源码目录中输入命令make help,它会显示一长串从源码树中生成的目标列表.最常见的使用make的方式是不指定目标,在这种情况下,它会生成内核ELF文件vmlinux和针对所选架构的 ...
- zip 文件下载函数封装
代码: export default { /** * 下载文件 */ exportFile: (fileUrl) => { if (fileUrl) { let exportFrame = do ...
- 〖Android〗代理与正常网络分开同步CyangenMod源码
为了同步CyanogenMod源代码,你也学会了FQ,对吗? 通常 .repo/manifest.xml 文件有Google AOSP的Project,也有Github的Project: 访问Gith ...
- 〖Network〗宿舍配置两路由器,同时访问校园内网和校园外网
环境: 校园宿舍, 10.x.x.x 和 172.16.x.x~172.31.x.x是校园内网,本科教务系统什么的都在上边 路由器: 路由器1(校园内网):水星MR807 路由器2(拨号上网):TP ...
- Ubuntu中的Gif动画录制工具
为了在随笔中插入gif动态图Windows系统上可以使用ScreenToGif这个非常好用的小软件,在Ubuntu系统中选择也很多(可以参考最下面的链接),下面介绍两款ubuntu系统中的录屏软件: ...
- Linux下RocksDB、LevelDB、ForestDB性能测试对比
简要说明 本次环境与http://www.cnblogs.com/oloroso/p/6306352.html中的一致. 依然是增删查改各测试10000次,每个测试重复5次取平均值. 1.不使用jem ...
- jquery版本号升级不兼容的问题:$("input").attr("value")功能发生改变
之前项目中使用的是jquery-1.6.3.js,在这个版本号中,假设我们想获取输入框的值,能够使用$("input").attr("value")或者是$(& ...
- java中转义字符和路径符
来源于:http://blog.csdn.net/u011479200/article/details/69062343 在Java的实际开发中,经常会遇填写一个文件的相对路径或者是绝对路径的问题,对 ...
- oracle 11g空表导不出问题
查询空表 ' 生成分配空间的执行语句 or num_rows is null 复制出来执行即可.