ExcelHome技术论坛

 找回密码
 免费注册

QQ登录

只需一步,快速开始

快捷登录

搜索
EH技术汇-专业的职场技能充电站 妙哉!函数段子手趣味讲函数 Excel服务器-会Excel,做管理系统 Excel Home精品图文教程库
HR薪酬管理数字化实战 Excel 2021函数公式学习大典 Excel数据透视表实战秘技 打造核心竞争力的职场宝典
300集Office 2010微视频教程 数据工作者的案头书 免费直播课集锦 ExcelHome出品 - VBA代码宝免费下载
用ChatGPT与VBA一键搞定Excel WPS表格从入门到精通 Excel VBA经典代码实践指南
查看: 8840|回复: 13

[2007] [分享]解析Excel 2007的新文件格式

[复制链接]

TA的精华主题

TA的得分主题

发表于 2007-6-14 13:42 | 显示全部楼层 |阅读模式
本帖已被收录到知识树中,索引项:其他专业开发

看看Excel2007工作簿文件
一个Excel2007文件就是一个压缩了的容器,其中包含着一些文件和文件夹。要查看这些文件和文件夹,只需将Excel2007的文件扩展名改为.zip或者.rar,即压缩文件的扩展名,也可以直接在Excel2007文件的扩展名后添加.zip或者.rar。
新建一个Excel2007工作簿,将该工作簿命名为test1.xlsx,然后关闭该工作簿。按上面的方法在该工作簿文件名后加上扩展名.zip,重命名该工作簿。

  图1:重命名该工作簿
  图2:加上压缩文件的扩展名
双击该工作簿文件,可以看到这个Excel2007文件的XML文件包结构如下:
 
图3:Excel2007的.xlsx文件的内容
此时,打开名为“xl”的文件夹,其包含的内容为:
 
图4:“xl”文件夹中的内容,如果工作簿中有vb工程,则会出现相应的二进制文件
Workbook.xml文件包含的内容如下:
 
图5:“Workbook.xml”文件,可直接在文件名上双击打开
在这里,可以看到各工作表对应的id号,即r:id。如果想操作某工作表,则先找到其r:id。例如,工作表“Sheet3”的r:id为rId3。
在图4中的文件夹“_rels”里,有一个名为“Workbook.xml.rels”的文件,包含着xml的代码片断:
 
图6:“Workbook.xml.rels”文件表明工作表中有哪些文件


[分享]解析Excel 2007的新文件格式

[分享]解析Excel 2007的新文件格式

[分享]解析Excel 2007的新文件格式

[分享]解析Excel 2007的新文件格式

[分享]解析Excel 2007的新文件格式

[分享]解析Excel 2007的新文件格式

[分享]解析Excel 2007的新文件格式

[分享]解析Excel 2007的新文件格式

[分享]解析Excel 2007的新文件格式

[分享]解析Excel 2007的新文件格式

[分享]解析Excel 2007的新文件格式

[分享]解析Excel 2007的新文件格式

TA的精华主题

TA的得分主题

 楼主| 发表于 2007-6-14 13:44 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
读取单元格的值
工作表“Sheet3”中的内容为:
 
图7:工作表Sheet3中的内容
sheet3.xml文件为:
 
图8:sheet3.xml,显示了单元格A1、A2和A3
但是,如何知道单元格A1中的内容呢?看上面的内容:<c r=”A1” t=”s”>,可知单元格A1中包含有一个字符串;下一行:<v>0</v>,告诉需要在“SharedStrings.xml”文件中找到第0项。“SharedStrings.xml”文件顶部的内容为:
 
表明在该工作簿中只有1个独立的字符串。注意,索引值是以0为基数开始的。上面的内容告诉需要查找的索引号为0,即该XML文件最开始的部分:

图9

[分享]解析Excel 2007的新文件格式

[分享]解析Excel 2007的新文件格式

[分享]解析Excel 2007的新文件格式

[分享]解析Excel 2007的新文件格式

[分享]解析Excel 2007的新文件格式

[分享]解析Excel 2007的新文件格式

[分享]解析Excel 2007的新文件格式

[分享]解析Excel 2007的新文件格式

TA的精华主题

TA的得分主题

 楼主| 发表于 2007-6-14 13:47 | 显示全部楼层
在单元格中添加文本
现在,如果想在工作表Sheet3中添加新的文本“新的课目”。
首先,修改“SharedStrings.xml”文件的顶部内容:
 
修改为:
然后,在文件中添加新的字符串:
 
接着,将“sheet3.xml”文件打开,并添加下面的内容(所选取的部分):
 
现在,恢复工作簿扩展名并重新打开该工作簿后,如下所示:
 
图10:编辑xml文件后的结果
注:可以将压缩文件夹中要编辑的文件拖拉出来,用记事本或xml编辑器进行编辑并保存后,再将该文件拖回压缩文件夹中。

[分享]解析Excel 2007的新文件格式

[分享]解析Excel 2007的新文件格式

[分享]解析Excel 2007的新文件格式

[分享]解析Excel 2007的新文件格式

[分享]解析Excel 2007的新文件格式

[分享]解析Excel 2007的新文件格式

[分享]解析Excel 2007的新文件格式

[分享]解析Excel 2007的新文件格式

[分享]解析Excel 2007的新文件格式

[分享]解析Excel 2007的新文件格式

TA的精华主题

TA的得分主题

 楼主| 发表于 2007-6-14 13:49 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
在单元格中添加数字
在单元格中添加数字与添加文本相似,但稍有不同。数字是直接保存在工作表xml文件中,并且可以添加数字格式。
例如,在前面的sheet3.xml文件中,数字单元格的格式为“常规”,并没有设置专门的格式。
单元格格式通过索引值来引用,如:

在单元格A3中显示的是日期。索引值1指向文件包中的另一个文件:styles.xml。单元格格式通过名为“cellXfs”的节点设置引用,在工作表xml文件中的s=”1”指向节点中的某一元素。素引值以0开始,因此索引值为1表示是第2项:
 
单元格格式交叉引用依次引用numFormatId列表、FontId列表、fillId列表和borderId列表,这些都包含在Styles.xml文件中。
因此,不能直接添加格式化的单元格到工作表中,必须检查是否指定的单元格格式组合已在单元格格式交叉引用中(Styles.xml文件),这要分别检查所有单个的格式引用。同时,如果格式组合是新的,则必须使用新格式扩展格式元素列表,并更新格式交叉引用。这些列表的所有“Count”的参数都需要更新。

[分享]解析Excel 2007的新文件格式

[分享]解析Excel 2007的新文件格式

[分享]解析Excel 2007的新文件格式

[分享]解析Excel 2007的新文件格式

TA的精华主题

TA的得分主题

 楼主| 发表于 2007-6-14 13:53 | 显示全部楼层

改变窗体控件的属性
通常,窗体控件与控件工具箱中的控件不同,其外观、字体、颜色等属性不能改变。下面,使用工作簿的文件包来更改这些属性。
例如,工作簿FormControls.xlsx的工作表Sheet1如下:
 
图11:包含一些窗体控件的工作表
现在,来分析这些窗体控件存放的位置。将工作簿FormControls.xlsx重命名为FormControls.zip,然后打开文件夹“xl”和“Worksheets”。打开“sheet1.xml”文件,可以看到有下面的内容(阴影部分):
 
上面加亮显示的内容指向窗体控件文件。要找到“rId2”,打开“_rels”文件夹,如图12所示:
 
图12
打开“sheet1.xml.rels”文件,查找rId2:

在这里,可以看出应该查找文件“../drawings/vmlDrawing1.vml”。
每个工作表的.vml文件都包含着控件或者在该文件中能捕捉到的其它对象。
将vmlDrawing1.vml文件拖到桌面上,然后打开它进行编辑。窗体控件中复选框的字体是不能编辑的,但该文件的内容展示了复选框的xml部分,现在来改变这个复选框中的字体。
 
将上面的内容:
<font face="宋体" size="180" color="auto">复选框 3</font>
改为:
<font face="Arial Black" size="320" color="auto">复选框 3</font>
保存并关闭该vml文件,然将其拖放到压缩文件夹中的Drawings文件夹中,再将FormControls.zip改为FormControls.xlsx,打开该工作簿,则复选框显示如下:
 图13:修改字体后的复选框
从这个vml文件中,也可以看出关于控件的其它信息,例如位置,即Anchor。因此,可以通过vml文件改变控件的位置。
也可以更改复选框字体的颜色,如将内容:
<font face="Arial Black" size="320" color="auto">复选框 3</font>
改为:
<font face="Arial Black" size="320" color="#FF0066">复选框 3</font>
保存该vml文件并拖放至相应的压缩文件夹,然后将.zip文件改回.xlsx文件,打开工作簿后的复选框显示如下:
 图13:修改字体和颜色后的复选框
通过上面的介绍,大家可以寻找并更改这些xml文件中的其它内容,以实现不同的处理。

分类:Excel2007>>文件格式研究

By fanjy in 2007-6-13

[分享]解析Excel 2007的新文件格式

[分享]解析Excel 2007的新文件格式

[分享]解析Excel 2007的新文件格式

[分享]解析Excel 2007的新文件格式

[分享]解析Excel 2007的新文件格式

[分享]解析Excel 2007的新文件格式

[分享]解析Excel 2007的新文件格式

[分享]解析Excel 2007的新文件格式

[分享]解析Excel 2007的新文件格式

[分享]解析Excel 2007的新文件格式

[分享]解析Excel 2007的新文件格式

[分享]解析Excel 2007的新文件格式

[分享]解析Excel 2007的新文件格式

[分享]解析Excel 2007的新文件格式

TA的精华主题

TA的得分主题

 楼主| 发表于 2007-6-14 13:57 | 显示全部楼层
示例文档下载: BWx7eqOq.rar (47.15 KB, 下载次数: 45)

TA的精华主题

TA的得分主题

发表于 2007-6-14 20:03 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
汗,这样的2007到底是更方便了,还是更容易泄密了呢?

TA的精华主题

TA的得分主题

发表于 2008-7-3 14:36 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助

好文章,好好学习!

TA的精华主题

TA的得分主题

发表于 2009-1-2 18:18 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
加密后能这样么,呵呵。谢谢版主,对你表示崇拜

TA的精华主题

TA的得分主题

发表于 2009-1-2 18:25 | 显示全部楼层
呵呵,实用加密后就打不开了,这样还好。呵呵
不过我是杞人忧天。我想加密的过程应该就是用密码作为一种参数对文本进行交织或者加扰吧。3G通信中的概念,呵呵。
您需要登录后才可以回帖 登录 | 免费注册

本版积分规则

关闭

最新热点上一条 /1 下一条

手机版|关于我们|联系我们|ExcelHome

GMT+8, 2024-4-19 07:47 , Processed in 0.048051 second(s), 11 queries , Gzip On, MemCache On.

Powered by Discuz! X3.4

© 1999-2023 Wooffice Inc.

沪公网安备 31011702000001号 沪ICP备11019229号-2

本论坛言论纯属发表者个人意见,任何违反国家相关法律的言论,本站将协助国家相关部门追究发言者责任!     本站特聘法律顾问:李志群律师

快速回复 返回顶部 返回列表