代码改变世界

解析Excel2007之文档结构

2009-04-30 14:03  ︶ㄣ木べ头  阅读(1124)  评论(1编辑  收藏  举报

来源于:http://gaby.cnblogs.com/

作者:Gaby,昵称:木头

说明:本人能力有限,所有文章均作为自己的学习笔记,如果不对或者不合理的地方, 欢迎留言提出,谢谢支持!

刚到新公司不久,被安排处理报表,原有报表是基于Excel2003,利用cab组件开发的,操作很麻烦,前几天为了实现一个效果害的我做梦都开思考实现方式。

大佬决定在这次之后开发新的报表引擎,基于Excel2007进行开发,我将在我的博客上记录下学习开发的过程以供备忘。

 

正文:

Excel2007文件后缀xlsx,可是它的原面目确是打包压缩的文件,将文件后缀改为zip,解压出来会看到真实的文件内容,如下图:

Excel进过初步了解大概知道了里面各个文件的存储内容及简单的关联关系,说明如下:

 

1、随处可见的_rels文件夹,里面的.rels文件是用来存储相关的文档间关联关系的定义内容的,如

<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<Relationships xmlns="http://schemas.openxmlformats.org/package/2006/relationships">
<Relationship Id="rId3" Type="http://schemas.openxmlformats.org/officeDocument/2006/
relationships/extended-properties"
Target="docProps/app.xml"/> <Relationship Id="rId2" Type="http://schemas.openxmlformats.org/package/2006/
relationships/metadata/core-properties"
Target="docProps/core.xml"/> <Relationship Id="rId1" Type="http://schemas.openxmlformats.org/officeDocument/2006/
relationships/officeDocument"
Target="xl/workbook.xml"/> </Relationships>

2、docProps文件夹存放是应该是文档的相关配置内容,具体的应该用不上,不管了。

3、[Content_Types].xml,存储的是对各个文件内容的类型定义,如

  <Default Extension="xml" ContentType="application/xml"/>
<Override PartName="/xl/workbook.xml" ContentType="application/
vnd.openxmlformats-officedocument.spreadsheetml.sheet.main+xml"
/> <Override PartName="/xl/charts/chart1.xml" ContentType="application/
vnd.openxmlformats-officedocument.drawingml.chart+xml"
/>

4、xl文件夹,这个文件夹就是重点了,存储的是我们Excel里面的内容了,下面我们一个一个来看(rels的就不说了,O(∩_∩)O~)

4.1、charts文件夹,显而易见,这里是统计图表的存放位置;

4.2、drawings文件夹,这里面存放的是Excel中类似于层那样漂浮显示在表格之上的内容,那chart应该包含在内呀( ⊙ o ⊙ )!,是的,drawing1.xml里面的内容就包括了chart,还包括了media文件夹里面的内容,如图片等,详细的等我仔细研究了在细说吧。不过可以知道的是,charts、media可以看做是被drawing引用的。

4.3、printerSettings文件夹,这个不知道做什么的,看名字跟打印有关。bin文件,不知道是什么文件,用不上就不管了。

4.4、theme文件夹,里面是主题样式,不过sheet里面设置的样式不存这里,它可是高级的主题,跟styles可不一样,哈哈。

4.5、worksheets文件夹,这个知道吧,是存储Excel表格内容的源头咯。知道就好,不多说,以后细细看啊。

4.6、calcChain.xml文件,这是存储公式的索引文件(不知道这样说对不对,里面只有记录哪个单元格是用了公式的,但是真正的公式又是写在worksheets文件夹里的sheet1.xml文件里面的,有点搞不明白)。

4.7、sharedStrings.xml,这里存储静态文本内容的,如果你在单元格里面写“Gaby啊Gaby”,就会记录到这个文件里面,在worksheets文件夹里的sheet1.xml里就只存一个关联关系。如

  <si>
<t>B2里的普通字符串</t>
<phoneticPr fontId="1" type="noConversion"/>
</si>

4.8、styles.xml,这里才是存放sheet里面的样式的。

4.9、workbook.xml,这个老NIU了,呵呵,它在管理sheets的