zoukankan      html  css  js  c++  java
  • Report_客制化Excel报表中的XLS标记(案例)

    2014-06-06 Created By BaoXinjian

    一、摘要


    分析文件结构,能够使我们清楚的掌握要用程序输出一个正确的脚本所必须的要素。

    XML和HTML的一个很大的区别在于,HTML为已定义的标签,每一个标签在浏览器中作用并不会存在很大的冲突,

    这里的意思是,浏览器在解释HTML脚本的时候,并不会太严格,原因是互联网刚发展的时候网络并不佳,请求丢包很多,

    所以HTML在丢失少量tag或某些特殊字符时,并不会出现严重的问题。

    但是XML不一样,XML是结构化自定义的,在确定了namespaces的情况下,必须按照namespace的结构定义来组成XML文件,

    特别是应用程序特殊处理的XML文件,不能出现细微错误的情况,例如tag有开始没有结束时,在Excel中就无法正确打开这个XML文件。

     

    XML数据表格格式的Excel文件的顶级tag是Workbook,二级Tag主要有以下几种

     

    二、标记解释


    4.1 XML头

    <?xml version="1.0"?>
    <?mso-application progid="Excel.Sheet"?>

    XML文件头以

    <?xml version="1.0"?>

    开始,表明这是一个XML文件;对于需要用Excel来默认打开的XML文件,需要再加一句:

    <?mso-application progid="Excel.Sheet"?>

    表明此XML文件用Excel默认打开。

     

    4.2 Tag: Namespaces

    <Workbook xmlns="urn:schemas-microsoft-com:office:spreadsheet"
      xmlns:o="urn:schemas-microsoft-com:office:office"
      xmlns:x="urn:schemas-microsoft-com:office:excel"
      xmlns:ss="urn:schemas-microsoft-com:office:spreadsheet"
      xmlns:html="http://www.w3.org/TR/REC-html40">

    这个部分为XML的开始,我们可以看到XML电子表格格式的Excel文件的顶级tag是<workbook> ,放在这个tag里面的属性为Namespace信息,

    相关控制文件都来自Microsoft.com,说明Excel在打开这种类型的XML文件的时候,是严格按照这几个Namespaces的格式来读取文件的。

    这个部分的Namespaces信息为固定的,必须的内容。

     

    4.3 Tag: DocumentProperties

    <DocumentProperties xmlns="urn:schemas-microsoft-com:office:office">
    <Created>2012-02-13T11:21:51Z</Created>
    <LastSaved>2012-02-13T14:03:08Z</LastSaved>
    <Version>14.00</Version>
    </DocumentProperties>

    这个部分主要设置Excel的文档属性内容,可以看到里有创建时间,修改时间和版本信息。

     

    4.4 Tag: OfficeDocumentSettings

    <OfficeDocumentSettings xmlns="urn:schemas-microsoft-com:office:office">
    <AllowPNG/>
    <RemovePersonalInformation/>
    </OfficeDocumentSettings>

    这个部分设置Offce 文档属性。

     

    4.5 Tag: ExcelWorkbook

    <ExcelWorkbook xmlns="urn:schemas-microsoft-com:office:excel">
    <WindowHeight>11640</WindowHeight>
    <WindowWidth>19200</WindowWidth>
    <WindowTopX>0</WindowTopX>
    <WindowTopY>90</WindowTopY>
    <ProtectStructure>False</ProtectStructure>
    <ProtectWindows>False</ProtectWindows>
    </ExcelWorkbook> 

    这个部分设置工作表的属性。

     

    4.6 Tag: Styles

    <Styles>
    <Style ss:ID="m76469184">
    <Alignment ss:Vertical="Bottom" ss:Rotate="90" ss:Horizontal="Center"/>
    <Borders>
    <Border ss:Weight="1" ss:LineStyle="Continuous" ss:Position="Bottom"/>
    <Border ss:Weight="1" ss:LineStyle="Continuous" ss:Position="Left"/>
    <Border ss:Weight="1" ss:LineStyle="Continuous" ss:Position="Right"/>
    <Border ss:Weight="1" ss:LineStyle="Continuous" ss:Position="Top"/>
    </Borders>
    <Font ss:Size="8" ss:FontName="Helv" ss:Bold="1" x:Family="Swiss"/>
    <Interior ss:Color="#FFFF99" ss:Pattern="Solid"/>
    <NumberFormat ss:Format="Fixed"/>
    </Style>
    </Styles>

    Style是一个可以作很大文章的部分,里面的属性设置包含了Excel里面常见的所有单元格,数据,颜色,方向等等,以ID的方式关联到具体的行,列或者单元格,对工作薄的格式设置支持比较完全。

     

    4.7 Tag: Worksheet

    这个部分为工作薄的数据表格部分,格式引用Styles中定义的Style。

    每一个Worksheet代表一个工作薄,即Excel中每一个工作页,”ss:Name” 代表工作表的名字,可以有多个工作表,不可重名。

     

    4.7.1 <Table> (必须)

    (1).Table的二级标签主要是<Column>和<Row>:

    <Column>主要作用是放在< Row >之前,控制每一列的宽度,不作显示数据用;

    < Row >是具体行,<Row>标签内是<Cell>,确定行内的每一个单元格。

    (2).Table的形式是这样的,先确定列宽度,然后确定行,然后确定单元格,其中值得注意的是列宽只能在<Column>的属性里确定,不能在<Cell>里指定单元格宽度;行高只能在<Row>的属性里确定,不能在<Cell>里指定单元格高度。

    <Column ss:StyleID="xxC" ss:Width="35" ss:AutoFitWidth="0"/>

    <Row ss:StyleID="xxR" ss:Height="15" ss:AutoFitHeight="0">

     

    4.7.2 <WorksheetOptions> (非必须)

    <WorksheetOptions xmlns="urn:schemas-microsoft-com:office:excel">
    <PageSetup><Print><Zoom>80</Zoom><Selected/><Panes><ProtectObjects>False</ProtectObjects><ProtectScenarios>False</ProtectScenarios>
    </WorksheetOptions>

     

     

    三、案例


    把”.xls”或”.xlsx”文件以”XML数据表格”的格式另存,用记事本或其他文本编辑器打开,就可以看到此表格的XML脚本。

    这种形式的Excel文件脚本大体分为4个部分,XML头,Excel样式,Sheet主数据块,XML尾。

    1. 一个简单的XLS标记表格 - 通过PLSQL输出

    <?xml version="1.0"?>
     <?mso-application progid="Excel.Sheet"?>
     <Workbook xmlns="urn:schemas-microsoft-com:office:spreadsheet"
      xmlns:o="urn:schemas-microsoft-com:office:office"
      xmlns:x="urn:schemas-microsoft-com:office:excel"
      xmlns:ss="urn:schemas-microsoft-com:office:spreadsheet"
      xmlns:html="http://www.w3.org/TR/REC-html40">
      <Worksheet ss:Name="Demo Sheet">
       <Table>
        <Row>
         <Cell><Data ss:Type="String">Hello!World!</Data></Cell>
        </Row>
        <Row>
         <Cell><Data ss:Type="String">Hello!World!</Data></Cell>
        </Row>
        <Row>
         <Cell><Data ss:Type="String">Hello!World!</Data></Cell>
        </Row>
        </Table>
       </Worksheet>
    </Workbook>

     

    2. 输出格式

     

    Thanks and Regards

    参考:Lumen Su - http://www.cnblogs.com/lzsu1989/archive/2012/02/24/2366766.html

  • 相关阅读:
    CentOS虚拟机和物理机共享文件夹实现
    集训第六周 数学概念与方法 概率 数论 最大公约数 G题
    集训第六周 数学概念与方法 概率 F题
    集训第六周 E题
    集训第六周 古典概型 期望 D题 Discovering Gold 期望
    集训第六周 古典概型 期望 C题
    集训第六周 数学概念与方法 UVA 11181 条件概率
    集训第六周 数学概念与方法 UVA 11722 几何概型
    DAG模型(矩形嵌套)
    集训第五周 动态规划 K题 背包
  • 原文地址:https://www.cnblogs.com/eastsea/p/4195550.html
Copyright © 2011-2022 走看看