excel格式讲解

Posted by hcy on October 12, 2021

excel格式讲解

新版的excel文件,本质是一个zip压缩包,将其解压后,能看到其内部结构。

解压文件目录

找一个excel.xlsx文件,将其进行解压,目录结构如下

image-20211012155547651

打开xl文件夹,styles.xml存储了全局的样式,worksheets内的sheet存储了每个sheet的数据,theme存储主题,shardStrings.xml存储的字符串池。

image-20211012155701566

打开sheet.xml,其结构如下

image-20211012155855353

row : 表示一行的内容 c :表示cell单元格 属性r=”A3” : 表示单元格的定位坐标 属性t=”s”: 表示cellType,单元格类型。没有默认是NUMBER

​ 可选值如下【b=BOOLEAN,e=ERROR,inlineStr=INLINE_STRING,s=SST_STRING,str=FORMULA】 属性s=”1”: 表示cellStyleStr,单元格样式字符串,使用此格式到style.xml中查找样式

​ 因为excel经常用于处理数字,所以t属性不写默认就是NUMBER。通过添加s属性,约束数字展示成什么样式,如日期底层存储的也是数字,但通过样式约束后,可以展示为不同的时间样式。

style.xml格式如下

image-20211012160202283

​ 上面sheet.xml中的 s="1",即到样式表的 cellXfs中查找第1个 (从0开始),可以看到第一个的numFmtId = 11 表示时间格式化采用第11个格式化类型,xfId=0表示去cellStyleXfs中查找第0个样式。还有一些边框,字体之类的就不太重要了。

内置的一些格式样式,下面是poi源码中的注释

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
BuiltinFormats.class
/**
 *       0, "General"<br>
 *       1, "0"<br>
 *       2, "0.00"<br>
 *       3, "#,##0"<br>
 *       4, "#,##0.00"<br>
 *       5, "$#,##0_);($#,##0)"<br>
 *       6, "$#,##0_);[Red]($#,##0)"<br>
 *       7, "$#,##0.00);($#,##0.00)"<br>	
 *       8, "$#,##0.00_);[Red]($#,##0.00)"<br>
 *       9, "0%"<br>
 *       0xa, "0.00%"<br>
 *       0xb, "0.00E+00"<br>
 *       0xc, "# ?/?"<br>
 *       0xd, "# ??/??"<br>
 *       0xe, "m/d/yy"<br>
 *       0xf, "d-mmm-yy"<br>
 *       0x10, "d-mmm"<br>
 *       0x11, "mmm-yy"<br>
 *       0x12, "h:mm AM/PM"<br>
 *       0x13, "h:mm:ss AM/PM"<br>
 *       0x14, "h:mm"<br>
 *       0x15, "h:mm:ss"<br>
 *       0x16, "m/d/yy h:mm"<br>
 *
 *       // 0x17 - 0x24 reserved for international and undocumented
 *       0x25, "#,##0_);(#,##0)"<br>
 *       0x26, "#,##0_);[Red](#,##0)"<br>
 *       0x27, "#,##0.00_);(#,##0.00)"<br>
 *       0x28, "#,##0.00_);[Red](#,##0.00)"<br>
 *       0x29, "_(* #,##0_);_(* (#,##0);_(* \"-\"_);_(@_)"<br>
 *       0x2a, "_($* #,##0_);_($* (#,##0);_($* \"-\"_);_(@_)"<br>
 *       0x2b, "_(* #,##0.00_);_(* (#,##0.00);_(* \"-\"??_);_(@_)"<br>
 *       0x2c, "_($* #,##0.00_);_($* (#,##0.00);_($* \"-\"??_);_(@_)"<br>
 *       0x2d, "mm:ss"<br>
 *       0x2e, "[h]:mm:ss"<br>
 *       0x2f, "mm:ss.0"<br>
 *       0x30, "##0.0E+0"<br>
 *       0x31, "@" - This is text format.<br>
 *       0x31  "text" - Alias for "@"<br>
 * 
 */


转载请注明出处:https://www.huangchaoyu.com/2021/10/12/excel格式讲解/