首页 > 代码库 > Excel 2007 底层实现方式
Excel 2007 底层实现方式
这里先看excel内容(一个7行6列的excel,红色箭头指向的是没有内容,空白的):
一、 excel2007是使用xml格式来存储的,把一个excel文件后缀改为.zip,打开之后就直接可以看到一个excel文件对应的xml格式的文件了。
1.1、docProps目录
1.1.1、 core.xml文件
创建时间和修改时间,标题,主题和作者
<?xml version="1.0" encoding="utf-8"?>
<cp:coreProperties xmlns:cp="http://schemas.openxmlformats.org/package/2006/metadata/core-properties" xmlns:dc="http://purl.org/dc/elements/1.1/"
xmlns:dcterms="http://purl.org/dc/terms/" xmlns:dcmitype="http://purl.org/dc/dcmitype/" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<!-- 创建人 -->
<dc:creator>Administrator</dc:creator>
<!-- 最后修改人 -->
<cp:lastModifiedBy>Administrator</cp:lastModifiedBy>
<!-- 创建时间 -->
<dcterms:created xsi:type="dcterms:W3CDTF">2008-09-11T17:22:52Z</dcterms:created>
<!-- 修改时间 -->
<dcterms:modified xsi:type="dcterms:W3CDTF">2017-03-31T15:29:39Z</dcterms:modified>
</cp:coreProperties>
1.1.2、 app.xml文件
文档的其他属性,文档类型,版本,是否只读,是否共享,安全属性等文档属性信息
<?xml version="1.0" encoding="utf-8"?>
<Properties xmlns="http://schemas.openxmlformats.org/officeDocument/2006/extended-properties"
xmlns:vt="http://schemas.openxmlformats.org/officeDocument/2006/docPropsVTypes">
<!-- 文档类型 -->
<Application>Microsoft Excel</Application>
<!-- 是否加密 -->
<DocSecurity>0</DocSecurity>
<ScaleCrop>false</ScaleCrop>
<HeadingPairs>
<vt:vector size="2" baseType="variant">
<vt:variant>
<vt:lpstr>工作表</vt:lpstr>
</vt:variant>
<vt:variant>
<vt:i4>3</vt:i4>
</vt:variant>
</vt:vector>
</HeadingPairs>
<TitlesOfParts>
<vt:vector size="3" baseType="lpstr">
<vt:lpstr>Sheet1</vt:lpstr>
<vt:lpstr>Sheet2</vt:lpstr>
<vt:lpstr>Sheet3</vt:lpstr>
</vt:vector>
</TitlesOfParts>
<Company/>
<LinksUpToDate>false</LinksUpToDate>
<!-- 是否共享 -->
<SharedDoc>false</SharedDoc>
<HyperlinksChanged>false</HyperlinksChanged>
<!-- 版本 -->
<AppVersion>12.0000</AppVersion>
</Properties>
1.2、 xl目录
1.2.1、workbook.xml文件
文件包含一对<sheets>标签,其中的每个<sheet>元素都代表Excel 2007文件中的一个,工作表的名称就是其name属性的值,这里有三个sheet
<?xml version="1.0" encoding="utf-8"?>
<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="4506"/>
<workbookPr defaultThemeVersion="124226"/>
<bookViews>
<workbookView xWindow="0" yWindow="105" windowWidth="12765" windowHeight="5715"/>
</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="125725"/>
</workbook>
1.2.2、 _rels/workbook.xml.rels
定义每个sheetid对应的sheet内容文件sheet1.xml,共享的单元格内容文件sharedstring.xml,样式文件style.xml是当前单元格的样式字体,颜色等样式的xml配置。
<?xml version="1.0" encoding="utf-8"?>
<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>
1.2.3、 worksheets文件夹
打开一个sheet1.xml看看,我们找到对应的第一行第一列的值索引为0对应到sharedStrings.xml里面的index的值,这里si从0开始,第一个即为index为0的值,刚好跟我们的excel的A1值符合
<?xml version="1.0" encoding="utf-8"?>
<worksheet xmlns="http://schemas.openxmlformats.org/spreadsheetml/2006/main" xmlns:r="http://schemas.openxmlformats.org/officeDocument/2006/relationships">
<dimension ref="A1:F7"/>
<sheetViews>
<sheetView tabSelected="1" workbookViewId="0">
<selection activeCell="H6" sqref="H6"/>
</sheetView>
</sheetViews>
<sheetFormatPr defaultRowHeight="14.25"/>
<cols>
<col min="6" max="6" width="10.875" customWidth="1"/>
</cols>
<sheetData>
<! -- row标签是表示每一行的数据,r表示第几行,其他几个都是这几行的样式 -->
<row r="1" spans="1:6">
<!-- c标签表示每个单元格的内容,这里A1 第一行的第一列,r表示位置,s表示这个单元格的样式,
s=9对应style.xml的的index为9的样式即为这个单元格的样式,
t=s表示这个单元格的值对应到sharedstring.xml中,里面的v标签即为该列的值在sharedstring.xml中的索引位置。
sharedstring.xml中每一个<si><si>代表一个值索引,从0开始计算
-->
<c r="A1" t="s">
<v>0</v>
</c>
<c r="B1" t="s">
<v>1</v>
</c>
<c r="C1" t="s">
<v>2</v>
</c>
<c r="D1" t="s">
<v>3</v>
</c>
<!-- 数字列,就直接展示数字 -->
<c r="E1">
<v>123</v>
</c>
<!-- 日期列,对应到style.xml中-->
<c r="F1" s="1">
<v>40941</v>
</c>
</row>
<row r="2" spans="1:6">
<c r="B2" t="s">
<v>9</v>
</c>
<c r="C2" t="s">
<v>14</v>
</c>
<c r="D2" t="s">
<v>19</v>
</c>
<c r="E2">
<v>123</v>
</c>
<c r="F2" s="1">
<v>40942</v>
</c>
</row>
<row r="3" spans="1:6">
<c r="A3" t="s">
<v>4</v>
</c>
<c r="C3" t="s">
<v>15</v>
</c>
<c r="D3" t="s">
<v>20</v>
</c>
<c r="E3">
<v>123</v>
</c>
<c r="F3" s="1">
<v>40943</v>
</c>
</row>
<row r="4" spans="1:6">
<c r="A4" t="s">
<v>5</v>
</c>
<c r="B4" t="s">
<v>10</v>
</c>
<c r="D4" t="s">
<v>21</v>
</c>
<c r="E4">
<v>123</v>
</c>
<c r="F4" s="1">
<v>40944</v>
</c>
</row>
<row r="5" spans="1:6">
<c r="A5" t="s">
<v>6</v>
</c>
<c r="B5" t="s">
<v>11</v>
</c>
<c r="C5" t="s">
<v>16</v>
</c>
<c r="E5">
<v>123</v>
</c>
<c r="F5" s="1">
<v>40945</v>
</c>
</row>
<row r="6" spans="1:6">
<c r="A6" t="s">
<v>7</v>
</c>
<c r="B6" t="s">
<v>12</v>
</c>
<c r="C6" t="s">
<v>17</v>
</c>
<c r="D6" t="s">
<v>22</v>
</c>
<c r="F6" s="1">
<v>40946</v>
</c>
</row>
<row r="7" spans="1:6">
<c r="A7" t="s">
<v>8</v>
</c>
<c r="B7" t="s">
<v>13</v>
</c>
<c r="C7" t="s">
<v>18</v>
</c>
<c r="D7" t="s">
<v>23</v>
</c>
<c r="E7">
<v>123</v>
</c>
<c r="F7" s="1"/>
</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"/>
</worksheet>
1.2.4、sharedStrings.xml文件
<?xml version="1.0" encoding="utf-8"?>
<sst xmlns="http://schemas.openxmlformats.org/spreadsheetml/2006/main" count="24" uniqueCount="24">
<!-- sheet中对应的索引0 -->
<si>
<t>A1</t>
<phoneticPr fontId="1" type="noConversion"/>
</si>
<!-- sheet中对应的索引1 -->
<si>
<t>B1</t>
<phoneticPr fontId="1" type="noConversion"/>
</si>
<si>
<t>C1</t>
<phoneticPr fontId="1" type="noConversion"/>
</si>
<si>
<t>D1</t>
<phoneticPr fontId="1" type="noConversion"/>
</si>
<si>
<t>A3</t>
</si>
<si>
<t>A4</t>
</si>
<si>
<t>A5</t>
</si>
<si>
<t>A6</t>
</si>
<si>
<t>A7</t>
</si>
<si>
<t>B2</t>
</si>
<si>
<t>B4</t>
</si>
<si>
<t>B5</t>
</si>
<si>
<t>B6</t>
</si>
<si>
<t>B7</t>
</si>
<si>
<t>C2</t>
</si>
<si>
<t>C3</t>
</si>
<si>
<t>C5</t>
</si>
<si>
<t>C6</t>
</si>
<si>
<t>C7</t>
</si>
<si>
<t>D2</t>
</si>
<si>
<t>D3</t>
</si>
<si>
<t>D4</t>
</si>
<si>
<t>D6</t>
</si>
<si>
<t>D7</t>
</si>
</sst>
1.2.5、style.xml文件
<?xml version="1.0" encoding="utf-8"?>
<styleSheet xmlns="http://schemas.openxmlformats.org/spreadsheetml/2006/main">
<fonts count="2">
<font>
<sz val="11"/>
<color theme="1"/>
<name val="Tahoma"/>
<family val="2"/>
<charset val="134"/>
</font>
<font>
<sz val="9"/>
<name val="Tahoma"/>
<family val="2"/>
<charset val="134"/>
</font>
</fonts>
<fills count="2">
<fill>
<patternFill patternType="none"/>
</fill>
<fill>
<patternFill patternType="gray125"/>
</fill>
</fills>
<borders count="1">
<border>
<left/>
<right/>
<top/>
<bottom/>
<diagonal/>
</border>
</borders>
<cellStyleXfs count="1">
<xf numFmtId="0" fontId="0" fillId="0" borderId="0"/>
</cellStyleXfs>
<cellXfs count="2">
<xf numFmtId="0" fontId="0" fillId="0" borderId="0" xfId="0"/>
<xf numFmtId="14" fontId="0" fillId="0" borderId="0" xfId="0" applyNumberFormat="1"/>
</cellXfs>
<cellStyles count="1">
<cellStyle name="常规" xfId="0" builtinId="0"/>
</cellStyles>
<dxfs count="0"/>
<tableStyles count="0" defaultTableStyle="TableStyleMedium9" defaultPivotStyle="PivotStyleLight16"/>
</styleSheet>
Excel 2007 底层实现方式
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。