由于微软没有发布SYLK规范,本文由我个人经验所得,如有错误的地方请联系我,感谢你们对我的支持-少莫千华(qq370763160)
特此声明。
目录
Symbolic Link. 1
1 简介... 2
2 用途... 2
3 SYLK 语法... 3
3.1 SLK文件说明... 3
3.2 转义与字符定义... 3
3.3 多重格式指定... 5
3.4 记录详解... 5
3.4.1 ID 记录... 5
3.4.2 B 记录... 6
3.4.3 C 记录... 6
3.4.4 P 记录... 7
3.4.5 F 记录... 12
3.4.6 O 记录... 16
3.4.7 NU 记录... 17
3.4.8 NE 记录... 17
3.4.9 NN 记录... 18
3.4.10 W 记录... 18
3.4.11 NL 记录... 18
3.4.12 E 记录... 18
3.5 附言... 19
4 附件表... 19
4.1 L颜色表... 19
4.2 月份简称表... 21
5 附件示例... 21
5.1 初始化单元格式... 22
5.2 设置内容... 24
5.3 设置字体颜色... 25
5.4 数字格式... 29
1 简介
SLK (Symbolic Link, 符号链接, 也可简写为"SYLK"),是一种电子表格数据库格式。
Symbolic Link (SYLK) 是微软的文件格式,一般用于应用程序之间的数据交互,是一种特殊的电子表格。SYLK文件一般有一个.slk 的后缀。只能以ANSI 字符格式显示, 其他应用程序可以很容易的创建或处理它,如数据库。
微软没有发布SYLK规范。该格式支持: Multiplan(美国Microsoft公司开发的一种电子表格程序)、Microsoft Excel(微软公司的办公软件Microsoft office的组件),、Microsoft Works(微软的一种家用综合软件)、 OpenOffice.org(一套跨平台的办公室软件套件) 和 Gnumeric(一款免费开源的电子表格处理软件)。
注意:即使应用程序创建SYLK文件的时候支持Unicode (如 Microsoft Excel), 该在当前系统下SYLK 文件也是用ANSI 代码页编码,而不是Unicode。如果应用程序包含可以显示的Unicode字符,但是当前系统代码页中没有codepoint,在 SYLK 文件中将以被替换成问号('?')。
还要注意的是在SYLK 文件中如果一个字符串包含一个分号(;),则需要另外再加一个分号,因此字符串将会这样显示"WIDGET#04;;AXC1254";MS Excel 导入的时候只获取第一个分号,数据元素将会这样显示"WIDGET#04;AXC1254"。由此可见,分号是一个转义字符。
在SYLK文件中经常遇到的杂乱事件,当一个文件以逗分隔值(CSV)的格式保存且第一字段名是不带引号的“ID”,此时这个文件的前两个字符与SYLK文件格式的前两个字符是匹配的。MicrosoftExcel (一直到Office 2013)将发出误导性有关的文件的格式错误信息,如“您尝试打开的文件smqh.csv的格式与文件扩展名指定的格式不一致,打开文件前请验证文件没有损坏且来源可信,是否立即打开该文件?”。
注:普通剪贴板的CF_SYLK格式,使用的就是ASCII编码的Symbolic Link,使用GetClipboardData(CF_SYLK)获得的数据用char*强制转换即可。
2 用途
WarCraftIII的MPQ包裹中有各种各样的slk文件,用来记录单位、技能、魔法效果、地形、天气、环境、声音、模型、贴图等等各种各样的数据。
修改slk可以做到很多连地图编辑器也难以做到的事情,而你所需要做的仅仅是把它们导出来,放到游戏文件夹下与mpq中相同的路径下,然后随心所欲的编辑。
slk可以用Excel等表格软件轻松的编辑,当然就算是用记事本编辑也不算太麻烦。
地图slk优化,是指把地图中的w3u,w3a,等等文件转化成slk。这样可以使地图载入速度大大加快,但是会增大地图体积。
slk优化也常常被称作"slk加密",事实上slk化只是让一些新手不容易修改地图数据而已,本身算不上加密。
3 SYLK语法
3.1 SLK文件说明
顺序 | 格式 | 含义 |
第一行 | ID;… | 文件头,包含文件的创建者(使用啥软件创建的),Excel = PWXL 文件是否是被保护的 |
紧随第二行 | P;P… | 单元格格式-数字、文本 |
紧随“P;P…” | P;F… P;E… | 字体样式(字体、颜色、字号) |
自定义 | B;… | 告知电子表格边界 |
自定义 | F;… | 设置格式 |
自定义 | C;… | 设置内容 |
自定义 | O;… | 选项 |
最后一行 | E | 结束符号 |
3.2 转义与字符定义
SYLK代码 | Excel语法 | Excel数据显示 |
;; | ; | 多重格式分隔符 第一个格式一般指的是正数,第二个格式一般默认指的是负数 |
\- | - | 负号或连接符 |
\‘Space’ | ‘Space’ | |
_- | ||
* | * | 任意一个字符串 |
? | ? | 任意一个字符 |
_? | 1个字符缩进 | |
@ | @ | 单元数据 |
#,## | #,## | 使用千位分隔符(,) |
[Red] | [红色] | |
[Blue] | [蓝色] | |
[Green] | [绿色] | |
[Black] | [黑色] | |
[White] | [白色] | |
[Yellow] | [黄色] | |
% | % | 百分比 |
?/? | ?/? | 分数(1位/1位) |
??/?? | ??/?? | 分数(2位/2位) |
yyyy | yyyy | 年(四位) |
yy | yy | 年(后两位) |
m | m | 月 |
d | d | 日 |
hh | hh | 小时 |
mm | mm | 分钟 |
ss | ss | 秒钟 |
AM/PM | AM/PM | 上午或下午 |
[h] | [h] | 参考日期时间与当前日期时间之差 |
_) | _) | 缩进1 |
\( | ( | 左括号 |
\) | ) | 右括号 |
\$ | $ | 货币符号 |
"年" | "年" | 年 |
"月" | "月" | 月 |
"日" | "日" | 日 |
"时" | "时" | 时 |
"分" | "分" | 分 |
"秒" | "秒" | 秒 |
上午/下午 | 上午/下午 | 上午/下午 |
_ | _ | 缩进一个字符 |
"自定义1" | "自定义1" | 数值:大于等于零的显示为自定义1,小于零的不显示。 |
"自定义1";;"自定义1" | "自定义1";"自定义1" | 数值:全部显示为自定义1。 |
"自定义1";;"自定义1";;"自定义1" | "自定义1";"自定义1";"自定义1" | 数值:全部显示为自定义1。 |
"自定义1";;"自定义1";;"自定义2" | "自定义1";"自定义1";"自定义2" | 数值:等于零的显示为自定义2,不等于零的显示为自定义1。 |
"自定义1";;"自定义2" | "自定义1";"自定义2" | 数值:小于零的显示为自定义2,大于等于零的显示为自定义1。 |
"自定义1";;"自定义2";;"自定义1" | "自定义1";"自定义2";"自定义1" | 数值:小于零的显示为自定义2,大于等于零的显示为自定义1。 |
"自定义1";;"自定义2";;"自定义2" | "自定义1";"自定义2";"自定义2" | 数值:小于零等于的显示为自定义2,大于零的显示为自定义1。 |
[$自定义-1] | [$自定义-1] | 左起第一个字符添加自定义。 |
[$自定义-2] | [$自定义-2] | 左起第一个字符添加为自定义,第二个字符添加为空格。 |
3.3 多重格式指定
Sylk文件常见的单元格式形式如下:
P;P格式1;;格式2;;格式3;;格式4
修改格式的顺序是:
1、 先将选择的区域所有内容设置成格式1;
2、 将小于的设置成格式2;
3、 将等于0 的设置成格式3;
4、 最后将文本设置成格式4。
这种格式都用于显示True False、Yes No、On Off、对错、负数警告等等。
3.4 记录详解
3.4.1 ID 记录
用途:必须是文件的第一个记录。文件头标识了电子表格的类型和创建者。
记录类型:ID
3.4.1.1 必填字段
P 应用程序 | 文件创建者 可能的创作者包括:MP (Multiplan)、XL (Microsoft Excel) 示例:PWXL (Microsoft Excel) |
3.4.1.2 可选字段
N | 如果存在,文件使用;N风格单元保护 如果不存在,文件使用;P风格单元保护 |
E | 如果存在,NE记录是多余的 如果不存在,NE记录不是多余的 |
3.4.2 B 记录
使用:告知电子表格的行数和列数(有效数据)。建议记录B之前先记录C和F。
3.4.2.1 必填字段
X 列数 | 告知最大列数 |
Y 行数 | 告知最大行数 |
DYS XS YE XE | 告知预处理区域 起始坐标 (XS YS)终止坐标(XE,YE),编号从0开始。 示例:有效区域 (行1列1)到(行3列4) B;Y3;X4;D0 0 2 3 |
3.4.3 C 记录
使用: 单元格内容
记录类型:C
3.4.3.1 必填字段
X 列 | 列位置 |
Y 行 | 行位置 |
3.4.3.2 可选字段
E 表达式 | 一个单元的表达式 |
K 值 | 一个单元的值 |
C 列 | 列引用 |
R 行 | 行引用 |
G | 定义共享值 |
D | 定义共享表达式 |
S | 引用共享值或共享表达式 |
N | 如果存在,单元格是没有保护的。. 如果不存在且;N在ID记录记录里面存在,单元格是被保护的. |
P | 如果存在,表格单元是被保护的。 如果不存在且;N在ID记录里面不存在,表格单元是不被保护的. |
H | 如果存在表格是单元是隐藏的, 如果不存在表格单元是显示的。 |
M 表达式 | 矩形区域表达式从(X,Y)到(C,R) |
I | 矩形区域内 |
3.4.3.3 兼容字段
如果;G存在,;E必须不存在。
如果;G存在,;K必须存在
如果;D存在,;E必须存在.
如果;S存在,;E、K、G、D和M必须不存在.
如果;S存在,;R和C必须存在。(他们定义了共享值/表达式的行和列)。
如果;N在ID记录里面存在,;P必须不存在.
如果;N在ID记录里面不存在,;N必须不存在
如果;M存在,;E必须不存在。
如果;I存在,;K和 ;E必须不存在。
3.4.4 P 记录
用途:单元格式
如果 F 记录存在,先于P记录。
P | 数据格式(文本、数字、货币、日期、时间等等) |
F | 全部内容的缺省字体,字体格式 (前四个F开头,后面的全部是E开头) 示例:P;F宋体;M360;SB;L63 |
E | 全部内容的缺省字体,字体格式 (前四个F开头,后面的全部是E开头) 示例:P;E宋体;M360;SB;L63 |
M | 字号(Sylk代码中的字号) =20*( FontSize_Excel界面) |
L | L为颜色,见L颜色表 |
3.4.4.1 必填字段
P格式 | Excel的单元格样式格式规范 |
3.4.4.2 P格式示例讲解
P;PGeneral | 通用格式 整数部分超过11位,则用科学计数法标识;整数部分未超高11位,长度超过11个字符,则在保证显示11个字符的情况下,保留相应的小数位数。 |
P;P0 | 只显示整数部分,小数点后一位使用四舍五入。 |
P;P0.00 | 表示保留两位小数,第三位小数使用四舍五入。 |
P;P#,##0 | 每三位用逗号隔开 |
P;P#,##0.00 | 整数部分每三位用逗号(,)隔开并保留2位小数 |
P;P#,##0;;\-#,##0 | 每三位用逗号(,)隔开 |
P;P#,##0;;[Red]\-#,##0 | 每三位用逗号隔开,正数用通用颜色的文本,负数用红色文本。 |
P;P#,##0.00;;\-#,##0.00 | 整数部分每三位用逗号(,)隔开并保留2位小数 |
P;P#,##0.00;;[Red]\-#,##0.00 | 整数部分每三位用逗号(,)隔开并保留2位小数,正数用通用颜色的文本,负数用红色文本。 |
P;P"$"#,##0;;\-"$"#,##0 | 整数部分每三位用逗号(,)隔开,正数将$符号放在最前,负数将$符号放在负号后面。 |
P;P"$"#,##0;;[Red]\-"$"#,##0 | 整数部分每三位用逗号(,)隔开。 正数将$符号放在最前,负数将$符号放在负号(-)后面。 正数用通用颜色的文本,负数用红色文本。 |
P;P"$"#,##0.00;;\-"$"#,##0.00 | 整数部分每三位用逗号(,)隔开。 正数将$符号放在最前,负数将$符号放在负号后面。 保留2位小数。 |
P;P"$"#,##0.00;;[Red]\-"$"#,##0.00 | 整数部分每三位用逗号隔开。 正数将$符号放在最前,负数将$符号放在负号(-)后面。 正数用通用颜色的文本,负数用红色文本。 保留2位小数。 |
P;P0% | 数值大小乘以100,结果值的小数点后第一位四舍五入。 数值最后加上百分号号(%)。 只显示整数部分。 |
P;P0.00% | 数值大小乘以100,结果值的小数点后第三位四舍五入。 数值最后加上百分号号(%)。 保留两位小数。 |
P;P0.00E+00 | 使用科学计数法显示(只显示一位整数,) 保留两位小数 注:Excel最大整数位308位整数 例:9.99E+307 |
P;P##0.0E+0 | 使用科学计数法显示,保证整数位的个数小于等于三,也就是说不出现逗号的情况 保留1位小数 注:Excel最大整数位308位整数 例:99.0E+306 |
P;P#\ ?/? | 小数部分以分数形式显示 分数的分子和分母都只能是个位数。例如: [0. 1000001, 0.1176470] 1/9 [0.1176471, 0.1333333] 1/8 [0.1333334, 0.1538461] 1/7 [0.1538462, 0.1818181] 1/6 [0.1818182, 0.2142857] 1/5 [0.2142858, 0.2307692] 2/9 [0.2307693, 0.2727272] 1/4 [0.2727273, 0.3000000] 2/7 [0.2727273, 0.3000000] 2/7 [0.3000001, 0.3636363] 1/3 [0.3636364, 0.3846153] 3/8 [0.3846154, 0.4166666] 2/5 [0.4166667, 0.4374999] 3/7 [0.4375000, 0.4545454] 4/9 [0.4545455, 0.5454545] 1/2 [0. 5454546, 0. 5625000] 5/9 [0. 5625001, 0. 5833333] 4/7 [0. 5833334, 0. 6153846] 3/5 [0. 6153847, 0. 6363636] 5/8 [0. 6363637, 0. 7000000] 2/3 [0. 7000001, 0. 7272727] 5/7 [0. 7272728, 0. 7692307] 3/4 [0. 7692308, 0. 7857142] 7/9 [0. 7857143, 0. 8181818] 4/5 [0. 8181819, 0. 8461538] 5/6 [0. 8461539, 0. 8666666] 6/7 [0. 8666667, 0. 8823529] 7/8 [0. 8823530, 0. 9000000] 8/9 [0. 9000001, 0. 9999999] 1 |
P;P#\ ??/?? | 小数部分以分数形式显示 分数的分子和分母都100以内的数。例如: 0.99=98/99 0.5=1/2 |
P;P#??/?? | 以分数形式显示 其中:分子= 整数部分×分母+小数部分的分子 |
P;Pyyyy/m/d | 以斜杆的形式显示“年月日”,例: 2016/8/10 |
P;Pd/mmm/yy | 以斜杆的形式显示“日月年”。 月以每个月英文单词的前3个字母缩写(见月份简称表)表示,年只显示个位和十位。 |
P;Pmmm/yy | 以斜杆的形式显示“日月”。 月以每个月英文单词的前3个字母缩写表示,年只显示个位和十位。 |
P;Phh:mm\ AM/PM | 以冒号的形式显示“时分 时段”,长度为12小时。 时段:AM代表上午(前12小时)PM代表下午(后12小时)。 |
P;Phh:mm:ss\ AM/PM | 以冒号的形式显示“时分秒 时段”,长度为12小时。 时段:AM代表上午(前12小时)PM代表下午(后12小时)。 |
P;Phh:mm | 以冒号的形式显示“时分”,长度为24小时。 |
P;Phh:mm:ss | 以冒号的形式显示“时分秒”,长度为24小时。 |
P;Pyyyy/m/d\ hh:mm | 显示形式“年月日 时分”。时间长度为24小时。 |
P;Pmm:ss | 显示形式“分秒”。 |
P;Pmm:ss.0 | 显示形式“分秒”。 秒钟保留一位小数,小数点后第二位四舍五入。 |
P;P@ | 以文本格式显示 |
P;P[h]:mm:ss | 以冒号的形式显示“时分秒”,长度为24小时。 时间是从“1900年1月1日 0时0分0秒”起到当前“日期-时间”的总时数。 |
P;P_-"$"* #,##0_-;;\-"$"* #,##0_-;;_-"$"* "-"_-;;_-@_- | 正数显示: $ 3,456,120 负数显示:-$ 3,456,120 零显示: $ - 文本左对齐显示: 测试 文本右对齐显示:测试 |
P;P_-* #,##0_-;;\-* #,##0_-;;_-* "-"_-;;_-@_- | 正数显示: 3,456,120 负数显示:- 3,456,120 零显示: - 文本左对齐显示: 测试 文本右对齐显示:测试 |
P;P_-"$"* #,##0.00_-;;\-"$"* #,##0.00_-;;_-"$"* "-"??_-;;_-@_- | 正数显示: $ 3,456,120.12 负数显示:-$ 3,456,120.12 零显示: $ - 文本左对齐显示: 测试 文本右对齐显示:测试 |
P;P_-* #,##0.00_-;;\-* #,##0.00_-;;_-* "-"??_-;;_-@_- | 正数显示: 3,456,120.12 负数显示:- 3,456,120.12 零显示: - 文本左对齐显示: 测试 文本右对齐显示:测试 |
P;P\$#,##0_);;\(\$#,##0\) | 正数和零显示:$3,456,120 负数显示:($3,456,120) |
P;P\$#,##0_);;[Red]\(\$#,##0\) | 正数和零显示:$3,456,120 负数显示:($3,456,120) |
P;P\$#,##0.00_);;\(\$#,##0.00\) | 正数和零显示:$3,456,120.12 负数显示:($3,456,120.12) |
P;P\$#,##0.00_);;[Red]\(\$#,##0.00\) | 正数和零显示:$3,456,120.12 负数显示:($3,456,120.12) |
P;Pm/d/yy | 日期显示:8/13/16 |
P;Pyyyy"年"m"月"d"日" | 日期显示:2016年8月13日 |
P;Phh"时"mm"分" | 时间显示:16时06分 |
P;Phh"时"mm"分"ss"秒" | 时间显示:16时06分01秒 |
P;Pyyyy"年"m"月" | 日期显示:2016年8月 |
P;Pm"月"d"日" | 日期显示:8月13日 |
P;P上午/下午hh"时"mm"分" | 时间显示:下午04时06分 |
P;P上午/下午hh"时"mm"分"ss"秒" | 时间显示:下午04时06分01秒 |
P;P"$"#,##0;;"$"\-#,##0 | 正数和零显示:$3,456,120 负数显示:$-3,456,120 |
P;P"$"#,##0;;[Red]"$"\-#,##0 | 正数和零显示:$3,456,120 负数显示:$-3,456,120 |
P;P"$"#,##0.00;;"$"\-#,##0.00 | 正数和零显示:$3,456,120.12 负数显示:$-3,456,120.12 |
P;P"$"#,##0.00;;[Red]"$"\-#,##0.00 | 正数和零显示:$3,456,120.12 负数显示:$-3,456,120.12 |
P;P_ "$"* #,##0_ ;;_ "$"* \-#,##0_ ;;_ "$"* "-"_ ;;_ @_ | 正数显示: $ 3,456,120 负数显示: $ -3,456,120 零显示: $ - 文本左对齐显示: 测试 文本右对齐显示:测试 |
P;P_ * #,##0_ ;;_ * \-#,##0_ ;;_ * "-"_ ;;_ @_ | 正数显示:3,456,120 负数显示: -3,456,120 零显示: - 文本左对齐显示: 测试 文本右对齐显示:测试 |
P;P_ "$"* #,##0.00_ ;;_ "$"* \-#,##0.00_ ;;_ "$"* "-"??_ ;;_ @_ | 正数显示: $ 3,456,120.12 负数显示: $ -3,456,120.12 零显示: $ - 文本左对齐显示: 测试 文本右对齐显示:测试 |
P;P_ * #,##0.00_ ;;_ * \-#,##0.00_ ;;_ * "-"??_ ;;_ @_ | 正数:3,456,120.12 负数显示:-3,456,120.12 零显示:- 文本左对齐显示: 测试 文本右对齐显示:测试 |
P;P"Yes";;"Yes";;"No" | 正数和负数显示:Yes 零显示:No |
P;P"True";;"True";;"False" | 正数和负数显示:True 零显示:False |
P;P"On";;"On";;"Off" | 正数和负数显示:On 零显示:Off |
P;P[$€-2]\ #,##0.00_);;[Red]\([$€-2]\ #,##0.00\) | 正数显示:€ 3,456,120.12 负数显示:-€ 3,456,120.12 |
P;E宋体;M220;SB;L64 | 字体宋体,字号11,加粗,颜色灰色-80% |
3.4.5 F 记录
用途:设置单元格格式
3.4.5.1 可选字段
X 列 | 列 |
Y 行 | 行 |
C 列 | 列 |
R 行 | 行 |
F 格式 | “单元/行/列”格式 |
D 格式 | 默认 |
E | 显示公式 |
K | 显示逗号 |
W 起始列 终止列 字符数 | 设置列宽 col1开始列号 col2结束列号,col2必须大于等于col1,示例: F;W1 1 14 F;W2 2 24 F;W4 10 1 F;W6 12 5 |
N 字体编号 大小 | 字体使用 |
P 编号 | 序号从0开始,指向“P;P*”所代表的内容。 Excel 单元格式,P的记录号 (例:P0的意思是第一个P记录, 第一个记录常常声明为“P;PGeneral”。 |
S 风格 | 风格 |
H | 如果存在不显示行/列的表头。如果不存在,则显示行/列表头 |
G | 如果存在,不显示默认网格线。 如果不存在,显示默认网格线。 |
SM 编号 | 序号从0开始,指向“P;E*”或“P;F*”所代表的内容(字体、字号、文本颜色)。 例:设置第三行第二列的字体格式为字体-黑体,字号18颜色为白色 …. P;E黑体;M260 P;E黑体;M960;L5 P;E黑体;M360;L2 P;E黑体;M960 F;FG0C;SM2;Y3;X2 …. |
L 颜色编号 | 设置网格颜色,见L颜色表。 示例: F;L2 |
M 字号 | 可以用来设置每一行的高度: 例:设置第二行的行高为1个字符(默认一个字符的字号为13)的高度: F;M260;R2 (M字号 size = 13*20)R = Rows |
3.4.5.1.1 F 格式
F的格式是:
F ch1 digits ch2
ch1
数字格式
D | 默认 |
C | 货币 |
E | 指数 |
F | 固定小数 |
G | 通用格式 |
$ | 美元 |
* | 图表 |
% | 百分比 |
digits
小数点后的位数
ch2
对齐方式
D | 默认 |
C | 居中 |
G | 标准 |
L | 靠左 |
R | 靠右 |
- | 忽略 |
X | 填充 |
3.4.5.1.2 D 格式
D的格式
ch1 digits ch2 nWidth
ch1
数字格式
C | 货币 |
E | 指数 |
F | 固定小数点 |
G | 通用格式 |
$ | 美元 |
* | 图标 |
% | 百分比 |
Digits
小数点后的位数
注:只有当“;P?”字段不存在的时候,且Ch1为可用小数点控制的格式,如“F;DE3G10;M220”、“F;DF3G10;M220”
ch2
对齐方式
C | 居中 |
G | 标准 |
L | 靠左 |
R | 靠右 |
- | 忽略 |
X | 填充 |
nWidth
设置列的宽度,单位(字符)
3.4.5.1.3 S 风格
下面的字符可以是样式的一部分:
I | 斜体 |
D | 加粗 |
T | 网格线的顶部 |
L | 网格线的左边 |
B | 网格线的底部 |
R | 网格线的右边 |
S | 背景阴影 |
3.4.5.2 兼容字段
至少有一个标识必须存在(;X, ;Y, ;C, ;R, ;D, ;E, ;K, ;W, ;P, ;H, ;G)。
如果 ;X 或者 ;Y 存在, ;X 和 ;Y必须同时存在(设置单元格式)。
如果 ;X存在, ;R, ;C, ;E, ;K, ;W, ;N, ;H, ;G必须不存在。
如果 ;R存在, ;X, ;Y, ;C, ;E, ;K, ;W, ;N, ;H, ;G必须不存在(设置行格式)。
如果 ;C存在, ;X, ;Y, ;R, ;E, ;K, ;W, ;N, ;H, ;G必须不存在(设置列格式)。
如果 ;D存在,;X, ;Y, ;R, ;C必须不存在(设置电子表格格式)。
如果 ;X, ;Y, ;R, ;C存在,;P与/或 ;F与/或 ;S必须存在。
3.4.5.3 单元格属性
F; < cl > < n > <c2 >
< cl >
以下格式码中的一个:
D | 默认 |
C | 连续交叉单元格显示 |
E | 科学计算 |
F | 固定小数点 |
G | 通用格式 |
$ | 首字符为$且保留2位小数 |
* | 柱状图,每个单元中的一个星号(5个单元将*****) |
< n >
位数
< c2 >
以下排列码中的一个:
D | 默认 |
C | 居中 |
G | 一般(文本靠左, 数字靠右) |
L | 左对齐 |
R | 右对齐 |
示例:一下SYLK代码演示了单元格属性:
ID;PWXL;N;E
P;PGeneral
P;F黑体;M260
P;F宋体;M960;L33
P;F宋体;M960;L33
P;E宋体;M180;L44
F;W1 1 24
F;W2 2 24
F;W3 10 24
F;W6 12 24
C;Y1;X1;K"Name"
C;Y1;X2;K"Title"
C;Y1;X3;K"Salary"
C;Y1;X4;K"Linenumber"
C;Y2;X1;K"Jari"
C;Y2;X2;K"Programmer"
C;Y2;X3;K"Less"
C;Y2;X4;K 1
C;Y3;X1;K"Michael"
C;Y1;X3;K"Title"
F;L3
F;FG0C;SM0;Y1;X1
F;FG0C;SM1;Y1;X2
F;FG0C;SM2;Y1;X3
F;FG0C;SM3;Y1;X4
C;K"Boss"
C;Y3;X3;K"More"
C;Y3;X4;K2
E
3.4.5.4 列宽
F;W< n1 > [S] < n2 > [S] < n3 >
定义一列的宽度:
[S] | 一个空格 |
< n1 > | 第一列 |
< n2 > | 最后一列 |
< n3 > | 列的的字符个数的宽度 |
例: 添加如下SYLK代码,第1列和第2列的宽度将分别调整到20和30个字符。
F;W1 1 20
F;W2 2 30
3.4.6 O 记录
用途:选项
3.4.6.1 可选字段
A 迭代 增量 | 如果存在,允许值迭代。 如果不存在,不允许循环引用。 迭代:最大迭代次数; 增量:一步测试,如果小,那么完成。 |
C | 最近的C记录前完成测试。 |
P | 表格是被保护的 |
L | 使用A1模式引用。 即如果在SYLK文件表达式中,;L赋值引用R1C1。 |
M | 如果存在,采用手动重新计算。 如果不存在,采用自动重新计算。 |
E | 表宏 这个字段必须在NN记录的;G或;F字段第一次出现之前出现。 这个字段必须在第一个仅使用宏函数的C记录出现之前出现。 |
V 值 | 值表示用于计算相对日期值的参考日期。 0:1 January 1900 4:1 January 1904 |
3.4.7 NU 记录
用途:文件名替换。
如果 NE记录存在,必须在其他记录之前。
3.4.7.1 必填字段:
L文件名 | 旧的文件名 |
F文件名 | 新的文件名 |
3.4.8 NE 记录
用途:外部链接
3.4.8.1 必填字段
E 表达式 | 电子表格的目标区域 |
F 文件名 | 源文件 |
S 表达式 | 外部表格的原始区域 |
3.4.9 NN 记录
用途:定义名称
如果NN在名称使用前出现会更有效果。
3.4.9.1 必填字段:
N 名称 | 名称 |
E 公式 | 表达描述名称值 |
3.4.9.2 可选字段
G ch1 ch2 | 可运行名(宏)使用命令键别名 |
K ch1 ch2 | 一般名称未使用的命令别名 |
F | 能用作函数 |
3.4.9.3 兼容字段
如果 ;G是存在的;K必须不存在。
3.4.10 W 记录
用途:定义窗口
3.4.11 NL 记录
用途:图表外部链接。
3.4.12 E 记录
用途:文件结束.
注意:必须是最后的一个记录。
3.5 附言
日期和时间被存储为浮点值。整数部分是从1900年1月1日开始算起的天数(如果O记录包含 ;V0标识,指定1900年为计算时间的起点),小数部分是总秒数除以 86400 (60*60*24为一天的总秒数)。SYLK时间转换成UNIX时间:用SYLK时间减去1970年1月1日和1900年1月1日之间的差(25569天),然后乘以86400。UNIX时间转换成SYLK时间:用UNIX时间除以86400,然后加上25569。该单元格样式必须设置一些日期格式值,例:P;Pdd/mm/yyyy\ hh:mm:ss 正确的显示。.slk 文件用Excel打开的时候,每个单元的字符限制长度是255。在LibreOffice中没有这个限制。
4 附件表
4.1 L颜色表
颜色样式 | 颜色名称 | 序号 | 二进制 | RGB值 |
黑色 | L0 | 00000000 | (0,0,0) | |
黑色 | L1 | 00000001 | (0,0,0) | |
白色 | L2 | 00000010 | (255,255,255) | |
红色 | L3 | 00000011 | (255,0,0) | |
绿色 | L4 | 00000101 | (0,255,0) | |
蓝色 | L5 | 00000110 | (0,0,255) | |
黄色 | L6 | 00000111 | (255,255,0) | |
紫色 | L7 | 00001000 | (255,0,255) | |
水蓝色 | L8 | 00001001 | (0,255,255) | |
黑色 | L9 | 00001010 | (0,0,0) | |
白色 | L10 | 00001011 | (255,255,255) | |
红色 | L11 | 00001100 | (255,0,0) | |
绿色 | L12 | 00001101 | (0,255,0) | |
蓝色 | L13 | 00001110 | (0,0,255) | |
黄色 | L14 | 00001111 | (255,255,0) | |
紫色 | L15 | 00010000 | (255,0,255) | |
水蓝色 | L16 | 00010001 | (0,255,255) | |
深红 | L17 | 00010010 | (128,0,0) | |
深绿 | L18 | 00010011 | (0,128,0) | |
深蓝 | L19 | 00010100 | (0,0,128) | |
深黄 | L20 | 00010101 | (128,128,0) | |
深紫 | L21 | 00010110 | (128,0,128) | |
深青 | L22 | 00010111 | (0,128,128) | |
灰色-25% | L23 | 00011000 | (192,192,192) | |
灰色-50% | L24 | 00011001 | (128,128,128) | |
浅蓝 | L25 | 00011010 | (153,153,255) | |
粉红 | L26 | 00011011 | (153,51,102) | |
浅黄 | L27 | 00011100 | (255,255,204) | |
天蓝 | L28 | 00011101 | (204,255,255) | |
深紫 | L29 | 00011110 | (102,0,102) | |
玫瑰红 | L30 | 00011111 | (255,128,128) | |
蓝色 | L31 | 00100000 | (0,102,204) | |
浅蓝 | L32 | 00100001 | (204,204,255) | |
深蓝 | L33 | 00100010 | (0,0,128) | |
紫色 | L34 | 00100011 | (255,0,255) | |
黄色 | L35 | 00100100 | (255,255,0) | |
水绿色 | L36 | 00100101 | (0,255,255) | |
深紫 | L37 | 00100110 | (128,0,128) | |
深红 | L38 | 00100111 | (128,0,0) | |
深青 | L39 | 00101000 | (0,128,128) | |
蓝色 | L40 | 00101001 | (0,0,255) | |
青绿 | L41 | 00101010 | (0,204,255) | |
天蓝 | L42 | 00101011 | (204,255,255) | |
浅绿 | L43 | 00101100 | (204,255,204) | |
浅黄 | L44 | 00101101 | (255,255,153) | |
浅蓝 | L45 | 00101110 | (153,204,255) | |
粉红 | L46 | 00101111 | (255,153,204) | |
淡紫 | L47 | 00110000 | (204,153,255) | |
浅橙色 | L48 | 00110001 | (255,204,153) | |
蓝色 | L49 | 00110010 | (51,102,255) | |
青色 | L50 | 00110011 | (51,204,204) | |
绿色 | L51 | 00110100 | (153,204,0) | |
金色 | L52 | 00110101 | (255,204,0) | |
橙色 | L53 | 00110110 | (255,153,0) | |
橙色 | L54 | 00110111 | (255,102,0) | |
靛蓝 | L55 | 00111000 | (102,102,153) | |
灰色-50% | L56 | 00111001 | (150,150,150) | |
深蓝 | L57 | 00111010 | (0,51,102) | |
绿色 | L58 | 00111011 | (51,153,102) | |
深绿 | L59 | 00111100 | (0,51,0) | |
深黄 | L60 | 00111101 | (51,51,0) | |
褐色 | L61 | 00111110 | (153,51,0) | |
粉红 | L62 | 00111111 | (153,51,102) | |
靛蓝 | L63 | 01000000 | (51,51,153) | |
灰色-80% | L64 | 01000001 | (51,51,51) |
注意:在使用SM调用字体格式的时候,SM4是空缺的,index从0开始
如果index<4; SM[index]引用 P;E/F[index];
如果index=4; SM[index](字体宋体,字体加粗,颜色-黑色);
如果index>4; SM[index]引用P;E/F[index-1]。
4.2 月份简称表
月份 | 简称 | 全称 | 古文 |
一月 | Jan | January | 建寅、元春、初岁、太簇、端月、王月、孟春、谨月、孟阳、上春、肇岁、泰月、新月、履端、首春、元阳、献春、春岁、青阳、梦阳、芳岁、华岁、发岁、新正、三之日、三阳月、三微月 |
二月 | Feb | February | 卯月、如月、令月、丽月、酣月、跳月、杏月、冷月、殷月、夹钟(钟)、仲春、春中、中和、仲阳、三春、阳中、竹秋、四阳月。 |
三月 | Mar | March | 辰月、嘉月、花月、樱月、宿月、季春、暮春、杪春、姑洗、桃李月、五阳月。 |
四月 | Apr | April | 巳月、余月、乏月、梅月、云月、鸟月、张月、槐月、仲吕、清和、麦秋、夏首、始夏、蚕虫、孟夏、槐序。 |
五月 | May | May | 午月、皋月、蒲月、鹑月、早月、桔月、蕤宾、端阳、仲夏。 |
六月 | Jun | June | 未月、且月、焦月、伏月、荷月、暑月、林钟(钟)、晚夏、季夏、长夏、百钟、二阴月。 |
七月 | Jul | July | 申月、相月、瓜月、兰月、凉月、巧月、桐月、夷则、兰秋、孟秋、肇秋、首秋、初秋、开秋、孟商、巧夕、三阴月。 |
八月 | Aug | August | 酉月、壮月、桂月、时月、南吕、清秋、中律、仲秋、仲商、正秋、剥枣、桂秋、四阴月、竹小春。 |
九月 | Sep | September | 戌月、玄月、菊月、霜月、朽月、长月、无射、秒秋、季商、季秋、菊序、霜序、末秋、梢秋。 |
十月 | Oct | October | 亥月、阳月、良月、吉月、应钟(钟)、孟冬、小春、玄冬、上冬、初冬、立冬、方冬、开冬、正阴、小阳春。 |
十一月 | Nov | November | 子月、畅月、纸月、黄钟(钟)、仲冬、龙潜、云半、冬半、风寒、芸生、日冻、天正月、一阳月。 |
十二月 | Dec | December | 丑月、涂月、腊月、除月、严月、余月、临月、季月、极月、大吕、嘉平、季冬、暮冬、岁杪、黄冬、晚冬、暮节、雕年、穷阴、穷冬、杪冬、地正月、二阳月。 |
5 附件示例
5.1 初始化单元格式
ID;PWXL;N;E P;PGeneral P;P0 P;P0.00 P;P#,##0 P;P#,##0.00 P;P#,##0;;\-#,##0 P;P#,##0;;[Red]\-#,##0 P;P#,##0.00;;\-#,##0.00 P;P#,##0.00;;[Red]\-#,##0.00 P;P"$"#,##0;;\-"$"#,##0 P;P"$"#,##0;;[Red]\-"$"#,##0 P;P"$"#,##0.00;;\-"$"#,##0.00 P;P"$"#,##0.00;;[Red]\-"$"#,##0.00 P;P0% P;P0.00% P;P0.00E+00 P;P##0.0E+0 P;P#\ ?/? P;P#\ ??/?? P;Pyyyy/m/d P;Pd/mmm/yy P;Pd/mmm P;Pmmm/yy P;Phh:mm\ AM/PM P;Phh:mm:ss\ AM/PM P;Phh:mm P;Phh:mm:ss P;Pyyyy/m/d\ hh:mm P;Pmm:ss P;Pmm:ss.0 P;P@ P;P[h]:mm:ss P;P_-"$"* #,##0_-;;\-"$"* #,##0_-;;_-"$"* "-"_-;;_-@_- P;P_-* #,##0_-;;\-* #,##0_-;;_-* "-"_-;;_-@_- P;P_-"$"* #,##0.00_-;;\-"$"* #,##0.00_-;;_-"$"* "-"??_-;;_-@_- P;P_-* #,##0.00_-;;\-* #,##0.00_-;;_-* "-"??_-;;_-@_- P;P\$#,##0_);;\(\$#,##0\) P;P\$#,##0_);;[Red]\(\$#,##0\) P;P\$#,##0.00_);;\(\$#,##0.00\) P;P\$#,##0.00_);;[Red]\(\$#,##0.00\) P;Pm/d/yy P;Pyyyy"年"m"月"d"日" P;Phh"时"mm"分" P;Phh"时"mm"分"ss"秒" P;Pyyyy"年"m"月" P;Pm"月"d"日" P;P上午/下午hh"时"mm"分" P;P上午/下午hh"时"mm"分"ss"秒" P;P"$"#,##0;;"$"\-#,##0 P;P"$"#,##0;;[Red]"$"\-#,##0 P;P"$"#,##0.00;;"$"\-#,##0.00 P;P"$"#,##0.00;;[Red]"$"\-#,##0.00 P;P_ "$"* #,##0_ ;;_ "$"* \-#,##0_ ;;_ "$"* "-"_ ;;_ @_ P;P_ * #,##0_ ;;_ * \-#,##0_ ;;_ * "-"_ ;;_ @_ P;P_ "$"* #,##0.00_ ;;_ "$"* \-#,##0.00_ ;;_ "$"* "-"??_ ;;_ @_ P;P_ * #,##0.00_ ;;_ * \-#,##0.00_ ;;_ * "-"??_ ;;_ @_ P;P"Yes";;"Yes";;"No" P;P"True";;"True";;"False" P;P"On";;"On";;"Off" P;P[$€-2]\ #,##0.00_);;[Red]\([$€-2]\ #,##0.00\) P;P0.00_ P;P0_ P;F宋体;M240 P;F宋体;M240 P;F宋体;M240 P;F宋体;M240 P;E宋体;M180 P;E宋体;M240 P;EArial;M180;L56 P;E宋体;M240 P;E宋体;M180;L56 P;E宋体;M240 P;E宋体;M220;L9 P;E宋体;M220;L43 P;E宋体;M360;SB;L63 P;E宋体;M300;SB;L63 P;E宋体;M260;SB;L63 P;E宋体;M220;SB;L63 P;E宋体;M220;L21 P;E宋体;M220;L18 P;E宋体;M220;SB;L9 P;E宋体;M220;SB;L53 P;E宋体;M220;SB;L43 P;E宋体;M220;SI;L24 P;E宋体;M220;L11 P;E宋体;M220;L53 P;E宋体;M220;L61 P;E宋体;M220;SB;L64 P;E宋体;M220;L63 P;EArial;M180;L56 P;E宋体;M220;L9 P;E宋体;M220;L43 P;E宋体;M360;SB;L63 P;E宋体;M300;SB;L63 P;E宋体;M260;SB;L63 P;E宋体;M220;SB;L63 P;E宋体;M220;L21 P;E宋体;M220;L18 P;E宋体;M220;SB;L9 P;E宋体;M220;SB;L53 P;E宋体;M220;SB;L43 P;E宋体;M220;SI;L24 P;E宋体;M220;L11 P;E宋体;M220;L53 P;E宋体;M220;L61 P;E宋体;M220;SB;L64 P;E宋体;M220;L63 P;EArial;M180;L56 P;E宋体;M240 P;E宋体;M240;SU P;E宋体;M180 F;P0;DG0G8;M285 B;Y2;X3;D10 3 10 3 O;L;D;V0;K47;G100 0.001 E |
5.2 设置内容
示例:以下是一个以.slk为后缀名的文本文件其中的SYLK代码:
ID;P
C;Y1;X1;K"Row 1"
C;Y2;X1;K"Row 2"
C;Y3;X1;K"Total"
C;Y1;X2;K11
C;Y2;X2;K22
C;Y3;X2;K33
E
当使用合适的电子表格读取时,它将会像下面的表格显示一样:
Row 1 | 11 |
Row 2 | 22 |
Total | 33 |
5.3 设置字体颜色
ID;PWXL;N;E P;PGeneral P;F黑体;M260;L1 P;F黑体;M260;L2 P;F黑体;M260;L3 P;F黑体;M260;L4 P;E黑体;M260;L5 P;E黑体;M260;L6 P;E黑体;M260;L7 P;E黑体;M260;L8 P;E黑体;M260;L9 P;E黑体;M260;L10 P;E黑体;M260;L11 P;E黑体;M260;L12 P;E黑体;M260;L13 P;E黑体;M260;L14 P;E黑体;M260;L15 P;E黑体;M260;L16 P;E黑体;M260;L17 P;E黑体;M260;L18 P;E黑体;M260;L19 P;E黑体;M260;L20 P;E黑体;M260;L21 P;E黑体;M260;L22 P;E黑体;M260;L23 P;E黑体;M260;L24 P;E黑体;M260;L25 P;E黑体;M260;L26 P;E黑体;M260;L27 P;E黑体;M260;L28 P;E黑体;M260;L29 P;E黑体;M260;L30 P;E黑体;M260;L31 P;E黑体;M260;L32 P;E黑体;M260;L33 P;E黑体;M260;L34 P;E黑体;M260;L35 P;E黑体;M260;L36 P;E黑体;M260;L37 P;E黑体;M260;L38 P;E黑体;M260;L39 P;E黑体;M260;L40 P;E黑体;M260;L41 P;E黑体;M260;L42 P;E黑体;M260;L43 P;E黑体;M260;L44 P;E黑体;M260;L45 P;E黑体;M260;L46 P;E黑体;M260;L47 P;E黑体;M260;L48 P;E黑体;M260;L49 P;E黑体;M260;L50 P;E黑体;M260;L51 P;E黑体;M260;L52 P;E黑体;M260;L53 P;E黑体;M260;L54 P;E黑体;M260;L55 P;E黑体;M260;L56 P;E黑体;M260;L57 P;E黑体;M260;L58 P;E黑体;M260;L59 P;E黑体;M260;L60 P;E黑体;M260;L61 P;E黑体;M260;L62 P;E黑体;M260;L63 P;E黑体;M260;L64 C;Y1;X1;K"#" C;Y2;X1;K"#" C;Y3;X1;K"#" C;Y4;X1;K"#" C;Y5;X1;K"#" C;Y6;X1;K"#" C;Y7;X1;K"#" C;Y8;X1;K"#" C;Y9;X1;K"#" C;Y10;X1;K"#" C;Y11;X1;K"#" C;Y12;X1;K"#" C;Y13;X1;K"#" C;Y14;X1;K"#" C;Y15;X1;K"#" C;Y16;X1;K"#" C;Y17;X1;K"#" C;Y18;X1;K"#" C;Y19;X1;K"#" C;Y20;X1;K"#" C;Y21;X1;K"#" C;Y22;X1;K"#" C;Y23;X1;K"#" C;Y24;X1;K"#" C;Y25;X1;K"#" C;Y26;X1;K"#" C;Y27;X1;K"#" C;Y28;X1;K"#" C;Y29;X1;K"#" C;Y30;X1;K"#" C;Y31;X1;K"#" C;Y32;X1;K"#" C;Y33;X1;K"#" C;Y34;X1;K"#" C;Y35;X1;K"#" C;Y36;X1;K"#" C;Y37;X1;K"#" C;Y38;X1;K"#" C;Y39;X1;K"#" C;Y40;X1;K"#" C;Y41;X1;K"#" C;Y42;X1;K"#" C;Y43;X1;K"#" C;Y44;X1;K"#" C;Y45;X1;K"#" C;Y46;X1;K"#" C;Y47;X1;K"#" C;Y48;X1;K"#" C;Y49;X1;K"#" C;Y50;X1;K"#" C;Y51;X1;K"#" C;Y52;X1;K"#" C;Y53;X1;K"#" C;Y54;X1;K"#" C;Y55;X1;K"#" C;Y56;X1;K"#" C;Y57;X1;K"#" C;Y58;X1;K"#" C;Y59;X1;K"#" C;Y60;X1;K"#" C;Y61;X1;K"#" C;Y62;X1;K"#" C;Y63;X1;K"#" C;Y64;X1;K"#" C;Y65;X1;K"#" F;FG0C;SM0;Y1;X1 F;FG0C;SM1;Y2;X1 F;FG0C;SM2;Y3;X1 F;FG0C;SM3;Y4;X1 F;FG0C;SM5;Y6;X1 F;FG0C;SM6;Y7;X1 F;FG0C;SM7;Y8;X1 F;FG0C;SM8;Y9;X1 F;FG0C;SM9;Y10;X1 F;FG0C;SM10;Y11;X1 F;FG0C;SM11;Y12;X1 F;FG0C;SM12;Y13;X1 F;FG0C;SM13;Y14;X1 F;FG0C;SM14;Y15;X1 F;FG0C;SM15;Y16;X1 F;FG0C;SM16;Y17;X1 F;FG0C;SM17;Y18;X1 F;FG0C;SM18;Y19;X1 F;FG0C;SM19;Y20;X1 F;FG0C;SM20;Y21;X1 F;FG0C;SM21;Y22;X1 F;FG0C;SM22;Y23;X1 F;FG0C;SM23;Y24;X1 F;FG0C;SM24;Y25;X1 F;FG0C;SM25;Y26;X1 F;FG0C;SM26;Y27;X1 F;FG0C;SM27;Y28;X1 F;FG0C;SM28;Y29;X1 F;FG0C;SM29;Y30;X1 F;FG0C;SM30;Y31;X1 F;FG0C;SM31;Y32;X1 F;FG0C;SM32;Y33;X1 F;FG0C;SM33;Y34;X1 F;FG0C;SM34;Y35;X1 F;FG0C;SM35;Y36;X1 F;FG0C;SM36;Y37;X1 F;FG0C;SM37;Y38;X1 F;FG0C;SM38;Y39;X1 F;FG0C;SM39;Y40;X1 F;FG0C;SM40;Y41;X1 F;FG0C;SM41;Y42;X1 F;FG0C;SM42;Y43;X1 F;FG0C;SM43;Y44;X1 F;FG0C;SM44;Y45;X1 F;FG0C;SM45;Y46;X1 F;FG0C;SM46;Y47;X1 F;FG0C;SM47;Y48;X1 F;FG0C;SM48;Y49;X1 F;FG0C;SM49;Y50;X1 F;FG0C;SM50;Y51;X1 F;FG0C;SM51;Y52;X1 F;FG0C;SM52;Y53;X1 F;FG0C;SM53;Y54;X1 F;FG0C;SM54;Y55;X1 F;FG0C;SM55;Y56;X1 F;FG0C;SM56;Y57;X1 F;FG0C;SM57;Y58;X1 F;FG0C;SM58;Y59;X1 F;FG0C;SM59;Y60;X1 F;FG0C;SM60;Y61;X1 F;FG0C;SM61;Y62;X1 F;FG0C;SM62;Y63;X1 F;FG0C;SM63;Y64;X1 F;FG0C;SM64;Y65;X1 E |
5.4 数字格式
第2列的应用的格式是P2,P2表示保留小数点后两位。
F;P2;C2
如下:P0 表示一般;P1 表示无小数点;P2 表示两位数;P3 保留两位小数且第一个符号为$。
ID;P
P;PGeneral
P;P_(* #,##0_);;_(* \-#,##0_);;_(* "-"_);;_(@_)
P;P_(* #,##0.00_);;_(* \(#,##0.00\);;_(* "-"??_);;_(@_)
P;P_("$"* #,##0.00_);;_("$"*\(#,##0.00\);;_("$"* "-"??_);;_(@_)
C;Y1;X1;K"Row 1"
C;Y2;X1;K"Row 2"
C;Y3;X1;K"Total"
C;Y1;X2;K11
C;Y2;X2;K22
C;Y3;X2;K0;ER1C2+R2C2
F;P2;C2
E
当使用合适的电子表格读取时,它将会像下面的表格显示一样:
Row 1 | 11.00 |
Row 2 | 22.00 |
Total | 33.00 |