【Excel文件的本质:一个包含XML、图片文件的压缩文件夹】

office应用 徐 自远 1388℃

【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”/>

功能区自定义具体操作细节可参考:

《vba|综合应用程序设计(从设计功能区到相关控件代码)》

http://m.toutiaocdn.cn/group/6481161863286489613/?iid=16255108960&app=news_article&tt_from=android_share&utm_medium=toutiao_android&utm_campaign=client_share

 

转载请注明:徐自远的乱七八糟小站 » 【Excel文件的本质:一个包含XML、图片文件的压缩文件夹】

喜欢 (0)

苏ICP备18041234号-1 bei_an 苏公网安备 32021402001397号