【Excel文件的本质:一个包含XML、图片文件的压缩文件夹】
有如下工作簿和工作表:
excel2007是使用xml格式来存储的,把一个excel文件后缀改为.zip,打开之后就直接可以看到一个excel文件对应的xml格式的文件了。如下图所示:
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>
如果要自定义功能区,需要新建cutomUI文件和文件夹加入到压缩文件夹,然后在上述标签内建立文件之间的联系。
2 文件夹docProps下有两个文件
app.xml
core.xml
这里core是文件的创建时间和修改时间,标题,主题和作者。
app是文档的其他属性,文档类型、版本、是否只读、是否共享、安全属性等文档属性信息。
3 在xl目录下是文档的具体内容信息
文件夹xl下文件内容:
3.1 xlworkbook.xml文件内容:
<?xml version=”1.0″ encoding=”UTF-8″ standalone=”yes”?>
<workbook xmlns=”http://schemas.openxmlformats.org/spreadsheetml/2006/main” xmlns:r=”http://schemas.openxmlformats.org/officeDocument/2006/relationships”><fileVersion appName=”xl” lastEdited=”4″ lowestEdited=”4″ rupBuild=”4505″/><workbookPr defaultThemeVersion=”124226″/><bookViews><workbookView xWindow=”96″ yWindow=”72″ windowWidth=”15288″ windowHeight=”6168″/></bookViews><sheets><sheet name=”Sheet1″ sheetId=”1″ r:id=”rId1″/>
<sheet name=”Sheet2″ sheetId=”2″ r:id=”rId2″/>
<sheet name=”Sheet3″ sheetId=”3″ r:id=”rId3″/>
</sheets>
<calcPr calcId=”124519″/></workbook>
workbook.xml文件包含一对<sheets>标签,其中的每个<sheet>元素都代表Excel 2007文件中的一个,工作表的名称就是其name属性的值,这里有三个sheet。
3.2 shareStrings.xml文件内容:
<?xml version=”1.0″ encoding=”UTF-8″ standalone=”yes”?>
<sst xmlns=”http://schemas.openxmlformats.org/spreadsheetml/2006/main” count=”3″ uniqueCount=”3″>
<si><t>B2单元格</t><phoneticPr fontId=”1″ type=”noConversion”/></si>
<si><t>B3单元格</t></si>
<si><t>B4单元格</t></si></sst>
在工作簿中,各工作簿使用的字符串统一存放在以上文件中,每组字符串使用元素<si>表示,其排列顺序就是其序号,表示工作表数据的XML文件用该序号来引用字符串。
3.3 样式文件style.xml是当前单元格的样式字体,颜色等样式的xml配置。
3.4 Theme存放的是当前的设置导航栏的默认样式。
3.5 xl_relsworkbook.xml.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/worksheet” Target=”worksheets/sheet3.xml”/>
<Relationship Id=”rId2″ Type=”http://schemas.openxmlformats.org/officeDocument/2006/relationships/worksheet” Target=”worksheets/sheet2.xml”/>
<Relationship Id=”rId1″ Type=”http://schemas.openxmlformats.org/officeDocument/2006/relationships/worksheet” Target=”worksheets/sheet1.xml”/>
<Relationship Id=”rId6″ Type=”http://schemas.openxmlformats.org/officeDocument/2006/relationships/sharedStrings” Target=”sharedStrings.xml”/><Relationship Id=”rId5″ Type=”http://schemas.openxmlformats.org/officeDocument/2006/relationships/styles” Target=”styles.xml”/>
<Relationship Id=”rId4″ Type=”http://schemas.openxmlformats.org/officeDocument/2006/relationships/theme” Target=”theme/theme1.xml”/></Relationships>
定义每个sheetid对应的sheet内容文件sheet1.xml。
3.6 xlworksheets文件夹:
文件sheet1.xml文件的内容:
<?xml version=”1.0″ encoding=”UTF-8″ standalone=”yes”?>
<worksheet xmlns=”http://schemas.openxmlformats.org/spreadsheetml/2006/main” xmlns:r=”http://schemas.openxmlformats.org/officeDocument/2006/relationships”><dimension ref=”B2:C4″/><sheetViews><sheetView tabSelected=”1″ workbookViewId=”0″><selection activeCell=”C5″ sqref=”C5″/></sheetView></sheetViews><sheetFormatPr defaultRowHeight=”14.4″/>
<sheetData> ‘工作表数据
<row r=”2″ spans=”2:3″><c r=”B2″ t=”s”><v>0</v></c><c r=”C2″><v>32</v></c></row>
<row r=”3″ spans=”2:3″><c r=”B3″ t=”s”><v>1</v></c><c r=”C3″><v>33</v></c></row>
<row r=”4″ spans=”2:3″><c r=”B4″ t=”s”><v>2</v></c><c r=”C4″><v>34</v></c></row>
</sheetData>
<phoneticPr fontId=”1″ type=”noConversion”/><pageMargins left=”0.7″ right=”0.7″ top=”0.75″ bottom=”0.75″ header=”0.3″ footer=”0.3″/><drawing r:id=”rId1″/></worksheet>
以上XML代码中,元素<c>表示该行中的一个单元格,对于单元格中的值,如果<c>元素有t属性的话,<c>元素的子元素<v>的值就是各工作表共享的字符串的索引,否则<v>元素的值就是该单元格的值。
3.7 图片保存在xlmedia文件夹中:
4 功能区自定义
通过增加一个文件夹customUI,其中有customUI.xml的文件,内容如下:
<customUI xmlns=”http://schemas.microsoft.com/office/2006/01/customui”>
<ribbon>
<tabs>
‘↓创建新选项卡
<tab id=”tabJXC” label=”进销存” >
<group id=”gpIN” label=”进货”>
<button id=”btIN_INPUT” imageMso=”ReviewNextChange”
size=”large” label=”录入” onAction=”btIN_INPUT_onAction”/>
<button id=”btIN_REPROT” imageMso=”RecordsMoreRecordsMenu”
size=”large” label=”报表” onAction=”btIN_REPORT_onAction”/>
</group>
<group id=”gpOUT” label=”销售”>
<button id=”btOUT_INPUT” imageMso=”ReviewPreviousChange”
size=”large” label=”录入” onAction=”btOUT_INPUT_onAction”/>
<button id=”btOUT_REPROT” imageMso=”RecordsMoreRecordsMenu”
size=”large” label=”报表” onAction=”btOUT_REPORT_onAction”/>
<button id=”btOUT_RESULTS” imageMso=”ControlLayoutStacked”
size=”large” label=”销售业绩” onAction=”btOUT_RESULTS_onAction”/>
</group>
</tab>
</tabs>
</ribbon>
</customUI>
在工作簿文件与xml文件之间建立关系:
在压缩文件的_rels文件夹内的.rles文件中添加以下内容(添加到最后一个Relationship标记前):
<Relationship Id=”customUIRelID”
Type=”http://schemas.microsoft.com/office/2006/relationships/ui/extensibility” Target=”customUI/customUI.xml”/>
功能区自定义具体操作细节可参考: