本章介绍xlsexport()函数的多种用法。
描述:
将序列/游标写入Excel文件。
语法:
f.xlsexport(A,x:F,…;s;p)
备注:
将序列/游标A写入Excel文件f。文件f不存在时会自动创建文件f(不能自动创建路径目录),f存在时则覆盖原文件f。
写入Excel时,A超出sheet页极限行后自动停止写入,xlsx文件的极限行数为1048576,xls文件的极限行数为65536 。
参数:
f |
文件。 |
A |
序列/游标。 |
x |
需要输出的字段,省略则导出所有字段,用#时表示用序号定位。 |
F |
结果字段名,省略则使用原字段名。 |
s |
sheet页的页名/序号,不存在时则新建,省略时在第一个sheet中写入。sheet名称不允许超过31个字符,第一个或最后一个字符不能是单引号,并且不能包含特殊字符[]:/\?* |
p |
Excel文件的密码。 |
选项:
@t |
A中第一行记录作为标题,缺省使用_1,_2,…。 |
@c |
使用流式写出大文件,当文件f存在时,文件f需要支持被写入,且不能过大。 |
@a |
原文件和原sheet存在时,将延用最后一行的格式继续写,此时与@t同时使用,认为原文件最后一个有内容的行是标题,且标题覆盖此行。 |
@k |
原文件存在时将保留;参数s存在时仅替换原文件中的sheet s,参数s省略时替换原文件中的第1个sheet页。 |
@w |
此时参数A是序列的序列或者是由回车/tab分隔的串, 与@t@c互斥,无需x:F参数。 |
@p |
当参数A为序列的序列时使用该选项,将先列后行的内容转置后写入Excel文件;必须与@w同时使用;参数A是由回车/tab分隔的串时忽略该选项。 |
@m |
写入Excel时,A超出sheet页极限行时自动增加新的sheet写入。 |
示例:
导出带密码的xls文件:
|
A |
|
1 |
=connect("demo").query("select top 10 EID,NAME,SURNAME from EMPLOYEE") |
返回序表:
|
2 |
=file("e1.xls").xlsexport(A1;"employee";"123") |
将序表A1中数据导出到e1.xls中名为employee的sheet页中,并设置e1.xls文件的打开权限密码为:123
|
使用@a选项,追加写入:
|
A |
|
1 |
=connect("demo").query("select top 10 EID,NAME,SALARY from EMPLOYEE") |
返回序表:
|
2 |
=file("e3.xls").xlsexport@a(A1) |
原e3.xls文件中C列设置了格式,内容为:
使用@a选项,原文件和原sheet存在时将延用最后一行的格式继续写,省略sheet名参数时在第一页内容下边追加写,追加写入后内容如下:
|
3 |
=file("e3.xls").xlsexport@a(A1;"s2") |
使用@a选项,原文件中不存在名为s2的sheet 页时,自动添加s2页:
|
使用@t选项,导出有标题的xls文件:
|
A |
|
1 |
=connect("demo").query("select top 10 EID,NAME,SURNAME from EMPLOYEE") |
返回游标,内容如下:
|
2 |
=file("e2.xls").xlsexport@t(A1,EID:id,#2:name) |
将游标A1中的EID、和第2个字段中数据导出到e2.xls中,并将导出的结果字段名分别定义为id、name:
|
3 |
=5.new(~:f1,~*~:f2) |
返回序表:
|
4 |
=file("e2.xls").xlsexport@at(A3;"Sheet1") |
使用@at选项,,原文件和原sheet存在时追加写入,并认为最后一个有内容的行是标题行,标题覆盖最后一行。
|
使用@m选项,超出Sheet的极限行数时增加新的Sheet写入 :
|
A |
|
1 |
=to(1048580).new(~:ID) |
生成序表,数据内容有1048580行。 |
2 |
=file("e4.xlsx").xlsexport@m(A1) |
使用@m选项,写出行数超过1048576时增加新的sheet写入:
|
导出序列的序列或以回车/tab作为分隔符的串:
|
A |
|
1 |
=file("e1.xls").xlsimport@w(;;"123") |
返回序列的序列:
|
2 |
=file("e5.xls").xlsexport@w(A1) |
使用@w选项,导出结果如下:
|
3 |
=file("d1.xls").xlsimport@w(;2) |
返回序列的序列:
|
4 |
=file("e6.xls").xlsexport@wp(A3) |
序列的序列A3是先列后行的:
使用@wp选项,将A3转置后写入Excel文件:
|
5 |
=file("e7.xls").xlsimport@s(;1) |
返回以回车/tab作为分隔符的串:
|
6 |
=file("e8.xls").xlsexport@w(A5) |
使用@w选项,导出结果如下:
|
7 |
=file("e9.xls").xlsexport@wp(A5) |
A4返回由回车/tab分隔的串,此时忽略@p,导出结果与A5相同。 |
使用@k选项,写出时保留原文件,仅替换原文件中指定sheet页内容 :
|
A |
|
1 |
=3.new(~:ID,~*~:num) |
生成序表:
|
2 |
=file("e7.xls") |
e7.xls文件内容如下,包含名为s1、s2的sheet页,s2内容如下:
|
3 |
=A2.xlsexport@kt(A1;"s2") |
使用@k选项,保留e7.xls文件原有的s1页,将A1的内容写入到e7.xls文件s2页中,写入后内容如下:
|
相关概念:
描述:
向Excel对象中写入序列/游标。
语法:
xo.xlsexport(A, x:Fi,..;s)
备注:
向Excel的s页中写入序列,当xo为@w方式读出的Excel对象时,参数A可以是游标。
参数:
xo |
非@r方式读出的Excel对象。 |
A |
序列/游标。 |
x |
需要输出的字段,省略则导出所有字段,用#时表示用序号定位。 |
Fi |
结果字段名,省略则使用原字段名。 |
s |
sheet页的页名/序号,不存在时新建,缺省在第一个sheet写入;sheet名称不允许超过31个字符,第一个或最后一个字符不能是单引号,并且不能包含特殊字符[]:/\?* |
选项:
@t |
A中第一行记录作为标题,缺省使用_1,_2,…。 |
@a |
原sheet存在时,将延用最后一行的格式继续写,此时与@t同时使用,认为原文件最后一个有内容的行是标题,且标题覆盖此行;缺省将覆盖。 |
@w |
此时参数A是序列的序列或者是由回车/tab分隔的串,与@t互斥;无需x:Fi参数。 |
@p |
当参数A为序列的序列时使用该选项,将先列后行的内容转置后写入Excel文件;必须与@w同时使用;参数A是由回车/tab分隔的串时忽略该选项。 |
示例:
|
A |
|
1 |
=demo.query("select * from scores") |
返回序表:
|
2 |
=file("E11.xlsx") |
|
3 |
=A2.xlsopen() |
读取文件E11.xlsx,返回Excel对象。 |
4 |
=A3.xlsexport@t(A1) |
将A1中的序表写入到Excel对象中。 |
5 |
=A3.xlsexport@t(A1,CLASS:class,STUDENTID:sid;"Class") |
在Excel对象中新建名称为Class的sheet页,并将A1序表中的CLASS与STUDENTID列分别重命名后写入Class页。 |
6 |
=A3. xlsexport@a(A1,STUDENTID,SUBJECT,SCORE; "STUSCORE") |
Excel对象中存在名称为STUSCORE的sheet页并且存在数据,将A1序表中的STUDENTID、SUBJECT、SCORE列追加写入STUSCORE页。 |
7 |
[[1,2,3],[4,5,6],[7,8,9]] |
|
8 |
=A3.xlsexport@w(A7) |
将序列的序列写入Excel中:
|
9 |
=A3.xlsexport@wp(A7) |
将先列后行的内容转置后写入Excel中:
|
10 |
=file("e7.xls").xlsimport@s(;1) |
返回以回车/tab作为分隔符的串:
|
11 |
=A3.xlsexport@w(A10) |
将A10写入Excel中:
|
12 |
=A3.xlsexport@wp(A10) |
A10返回由回车/tab分隔的串,此时忽略@p,写入Excel的内容与A11相同。 |
13 |
=A2.xlswrite(A3) |
使用xlswrite函数将Excel对象保存到E11.xlsx。 |