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, "@"
