zoukankan      html  css  js  c++  java
  • OOXML,XLSX分析

    07以上的xlsx是使用了OOXML和zip,将后缀修改为.zip,就可以看到文件,主要分析xl目录下的文件,如图:

     

    主要数据文件在xl目录下面

    styles.xml里面存放着excel的样式数据

    很容易看出包含,字体,边框,单元格样式信息。

    sharedStrings.xml存储的excel中的字符串,excel中的字符串都是放在这个里面,共享字符串,所以往往excel的文件会比txt小。

    worksheets里面是excel的sheet文件

    打开xml

    其中r="C2"表示excel的C2这个单元格,t="s"表示该单元格是字符串,val是2表示在sharedStrings.xml里面第二个共享的字符串。

    其中r="N2"表示excel的N2这个单元格,s="2"表示该单元格有样式,在styles.xml里面的cellXfs里面的第3个样式(0是第一个)。

    仔细分析cellXfs会发现<xf borderId="0" fillId="0" fontId="0" numFmtId="0" xfId="0"/>里面有numFmtId,表示数字的格式,每个数字代表不同的样式,看POI的源码org.apache.poi.ss.usermodel.BuiltinFormats里面能找到每个数字代表的含义:

    0, "General"

    1, "0"

    2, "0.00"

    3, "#,##0"

    4, "#,##0.00"

    5, "$#,##0_);($#,##0)"

    6, "$#,##0_);[Red]($#,##0)"

    7, "$#,##0.00);($#,##0.00)"

    8, "$#,##0.00_);[Red]($#,##0.00)"

    9, "0%"

    0xa, "0.00%"

    0xb, "0.00E+00"

    0xc, "# ?/?"

    0xd, "# ??/??"

    0xe, "m/d/yy"

    0xf, "d-mmm-yy"

    0x10, "d-mmm"

    0x11, "mmm-yy"

    0x12, "h:mm AM/PM"

    0x13, "h:mm:ss AM/PM"

    0x14, "h:mm"

    0x15, "h:mm:ss"

    0x16, "m/d/yy h:mm"

    // 0x17 - 0x24 reserved for international and undocumented

    0x25, "#,##0_);(#,##0)"

    0x26, "#,##0_);[Red](#,##0)"

    0x27, "#,##0.00_);(#,##0.00)"

    0x28, "#,##0.00_);[Red](#,##0.00)"

    0x29, "_(* #,##0_);_(* (#,##0);_(* "-"_);_(@_)"

    0x2a, "_($* #,##0_);_($* (#,##0);_($* "-"_);_(@_)"

    0x2b, "_(* #,##0.00_);_(* (#,##0.00);_(* "-"??_);_(@_)"

    0x2c, "_($* #,##0.00_);_($* (#,##0.00);_($* "-"??_);_(@_)"

    0x2d, "mm:ss"

    0x2e, "[h]:mm:ss"

    0x2f, "mm:ss.0"

    0x30, "##0.0E+0"

    0x31, "@"

  • 相关阅读:
    将博客搬至CSDN
    JDBC
    Java刷题常用API
    Java的反射机制
    Java的IO流
    Docker原理:Cgroup
    Docker原理:Namespace
    Anaconda软件安装使用问题
    初步了解Unix系统的I/O模式
    深入理解索引和AVL树、B-树、B+树的关系
  • 原文地址:https://www.cnblogs.com/tootwo2/p/8120053.html
Copyright © 2011-2022 走看看