excel文件实现包含xml的详情

excel 文件描述

excel 是一个包含多个xml文件目录的zip压缩文件。

/表示为excel文件解压后的根目录
/docProps 文档相关的属性
/xl excel  数据相关厨房目录
/xl/charts excel 图表相关都存在这里
/xl/drawings excel 图表定义 
/xl/worksheets excel工作簿下sheet存放目录
/xl/media 用来excel中导入的图片,声音,视频等地方资源

excel 文件组成部分

/_rels/.rels  包关系项

/[Content_Types].xml  内容类型项

/docProps/app.xml  应用程序定义的文件属性部分,sheet与sheet名字关系,

/docProps/core.xml   核心文件属性部分

/xl/workbook.xml   工作簿部分相关定义

/xl/_rels/workbook.xml.rels 部分关系项


/xl/sharedStrings.xml   共享字符串表部分,用户输入内容

/xl/styles.xml   样式部分,关于font,boder,fill 相关定义


/xl/worksheets/sheetX.xml   excel中sheet中单元格与样式的关系,内容,数据校验等相关

/xl/theme/themeX.xml   sheetX的主题部分,themeX中的**X**表示的是工作X(数字)的主题,eg:1,2,3 

/xl/media/nameX.xml excel引入外部资源的定义
必须的xml文件
/_rels/.rels

/docProps/app.xml

/docProps/core.xml

/xl/sharedStrings.xml

/xl/styles.xml

/xl/thene/themeX.xml

/xl/workbook.xml

/xl/worksheets/sheetX.xml

style.xml

style有font,fill, border,cellXfs等四部分组成。

font 表示字体相关的描述

fill 表示填充颜色及样式

border 表示边框颜色及样式

cellXfs有font,fill,border组成,来描述一个具体对象的样式

每一个xml节点的count属性表示共有多少个子对象

<styleSheet> 
   <font></font>
   <fills count="">
       <fill></fill>
   </fills>
   <borders count="">
       <border></border>
   </borders>
   <cellXfs count="">
	   <xf></xf>
   </cellXfs>
</styleSheet>
 
font 组成
<font>
   <b/>加粗
   <i/> 倾斜
   <u val="double|single"/> 下划线,单|双
   <sz val="x"/> 字体大小, val=size
   <name val=""/> 字体名
   <family val=""> 此元素指定当前字体的字体系列。 此信息可以按字体定义使用
当此字体不可用时,替换逻辑以找到适当的替代字体。 这个信息是
通过在存在时查询字体来确定,并且在字体不可用时不应修改。
</font>
fill 组成
	<fill>
		<patternFill patternType="solid">  patternType表示填充的类型
			<fgColor rgb="AARRGGBB" />   前景色,AARRGGBB, AA表示是透明度,RR红色,GG绿色,BB蓝色,每一位都一个16进制数字
			<bgColor rgb="AARRGGBB" />  背景色, AARRGGBB
		</patternFill>
	</fill>
	
border 组成
  <border>    
     <left /> 左边框
     <right /> 右边框
     <top />  上边框
     <bottom />  下边框
     <diagonal /> 对角线
  </border>

border 节点可以有属性diagonalUp,diagonalDown 这两个属性是border中孩子节点diagonal描述,表示对角线话的放心, left,right,top,bottom四个节点可以有color子节点及style属性,color子节点有一个rgb属性用来描述颜色值, style表示边框的样式

xf组成
  <xf numFmtId="" fontId="" fillId="" borderId="" xfId="">
   <alignment vertical=""  horizontal="" textRotation="" wrapText="" /> 
  </xf>

numFmtId 单元格格式

fontId fonts节点的子节点index

fillId fills节点的子节点index

borderId borders节点的子节点indx

vertical cell内容的对齐方式

horizontal cell内容的对齐方式

textRotation cell内容文字的旋转方式

wrapText 文字环绕方式

部分字段可选值

vertical,horizontal 的部分值

left
center
right
fill
justify
centerContinuous
distributed

numFmtId 的部分值 0 通用格式 1 整数 18 时间, 格式是h:mm AM/PM 19 时间, 格式是h:mm:ss AM/PM 20 时间, 格式是h:mm 21 时间, 格式是h:mm:ss 22 日期,格式是m/d/yy h:mm 49 文字

sheetX.xml

<worksheet>
   <dimension ref="" />
   <sheetViews>
  <sheetView windowProtection="" showFormulas="" showGridLines="" showRowColHeaders="" showZeros="" rightToLeft="false" tabSelected="" showOutlineSymbols="true" defaultGridColor="true" view="normal" topLeftCell="A1" colorId="64" zoomScale="" zoomScaleNormal="" zoomScalePageLayoutView="" workbookViewId="">
       </sheetView>
   </sheetViews>
   <sheetFormatPr />
   <col collapsed="" hidden="" min="" max="" width="" style="" customWidth="" />
   <sheetData>
      <row r="" spans="">
         <c r="" t="">
             <v></v>
         </c>
      </row>
   </sheetData> 
   <dataValidations count="2">
     <dataValidation type="" allowBlank="" showInputMessage="" showErrorMessage="" sqref="">
       <formula1>
        ""
       </formula1>
 	   <formula2>
        ""
       </formula2>
     </dataValidation>
    </dataValidations>

   <pageMargins left="" top="" bottom="" header="" footer="" />
   <pageSetup paperSize="" orientation="" verticalDpi=""  />
   <drawing />
   <extLst>
     <ext>
     </ext>
   </extLst>

</worksheet>

articles from reage blog -- http://www.ireage.com