本章介绍xlsimport()函数的多种用法。
描述:
语法:
f.xlsimport() |
|
f.xlsimport(Fi,…;s,b:e;p) |
从f中读取b行到e行的所有数据,返回成序表。 e<0表示倒数,Fi为读出的字段,缺省读出所有字段。s为sheet名或第s个sheet。 |
备注:
从Excel文件f中读取每行内容,将每行内容作为一个记录返回成序表。
参数:
f |
Excel文件。 |
Fi |
读出的字段,缺省读出所有,用#时表示用序号定位。 |
s |
sheet名或序号。如果s省略则找第一个sheet。 |
b |
起始行,b省略表示从第一行开始读到e行。此时“:”可以省略。 |
e |
结束行,e省略表示从b行读取到最后一行,此时“:”不可以省略。若e比实际行数大,则以实际最后行数为准。 b和e都省略时表示从第一行读取到最后一行。 |
p |
Excel文件打开权限密码。 |
选项:
@t |
f中第一行记录作为字段名,不使用本选项就使用_1,_2,…作为字段名。有b参数时认为标题在b行。 |
@c |
返回成游标,只支持xlsx格式;此时e不能小于0。 |
@b |
读取时去除Excel内容前后的空白行,不支持与@c选项组合使用。 |
@w |
数据返回形式为序列组成的序列,成员为格值;@w与@t、@c、@b选项互斥。 |
@s |
返回成由/tab作为分隔符的串。 |
@p |
必须与@w同时使用,返回由Excel列组成的序列的序列。 |
@n |
读入时去除字符串两端的空白字符,空串则读成null。 |
返回值:
序表
示例:
读取整个xls文件:
|
A |
|
1 |
=file("emp1.xls").xlsimport() |
|
2 |
=file("password_abc.xls").xlsimport(;;"abc") |
读取带密码的xls文件,password_abc.xls的打开权限密码为abc。 |
读取xls文件时将第一行作为标题,并读取指定字段:
|
A |
|
1 |
=file("emp1.xls").xlsimport@t(NAME,GENDER;) |
读取字段NAME,GENDER中的数据:
|
2 |
=file("emp1.xls").xlsimport@t(#1,#2;) |
读取xls中第1个和第2个字段中的数据:
|
多sheet页文件的读取:
|
A |
|
1 |
=file("emp2.xlsx").xlsimport@t(;"t1") |
emp2.xlsx中包含两个sheet页,sheet页名称分别为t1,t2。 通过sheet页名称读取t1页中的数据。
读取多sheet页的xls文件时,当参数s省略时默认读取第1个sheet页。 |
2 |
=file("emp2.xlsx").xlsimport@t(;2) |
通过sheet页序号读取第2个页中的数据。
|
指定起始行、结束行:
|
A |
|
1 |
=file("emp2.xlsx").xlsimport(;2,3:6) |
读取emp2.xlsx第2个sheet页中的第3行至第6行:
|
2 |
=file("emp2.xlsx").xlsimport@t(;2,3:6) |
使用@t选项并且有b参数时,将b行数据作为标题:
|
3 |
=file("emp2.xlsx").xlsimport@t(;"t2",:6) |
省略b,认为第1行为标题行并从第1行读读到第6行,“:”不可省略:
|
4 |
=file("emp2.xlsx").xlsimport(;"t2",7:) |
省略e,从第7行读到最后一行,“:”可省略:
|
5 |
=file("emp2.xlsx").xlsimport(;"t2",3:-4) |
从第3行读到倒数第4行:
|
读取xlsx文件内容,并返回成游标:
|
A |
|
1 |
=file("emp3.xlsx").xlsimport@c() |
返回游标。 |
2 |
=A1.fetch() |
|
读取时去除Excel内容前后的空白行:
|
A |
|
1 |
=file("emp4.xls") |
|
2 |
=A1.xlsimport@b() |
使用@b选项,读取时去除Excel内容前后的空白行。 |
数据返回形式为序列组成的序列:
|
A |
|
1 |
=file("emp1.xls").xlsimport@w() |
使用@w选项,返回序列组成的序列,每一行作为序列的成员:
|
返回Excel列组成的序列:
|
A |
|
1 |
=file("emp1.xls").xlsimport@pw() |
使用@wp选项,返回Excel列组成的序列,每一列作为序列的成员:
|
返回以/tab作为分隔符的串:
|
A |
|
1 |
=file("emp1.xls").xlsimport@s() |
使用@s选项,返回以/tab作为分隔符的串:
|
相关概念:
描述:
从Excel对象中取出序表。
语法:
xo.xlsimport(Fi,..;s,b:e)
备注:
从Excel的s或第s个sheet页中取出b到e行的内容,返回序表。所有参数都缺省表示取出第1个sheet页的序表。xo为非@w方式读出的Excel对象。
参数:
xo |
非@w方式读出的Excel对象。 |
Fi |
Excel列名;省略时取出全部列。 |
s |
页名/页码。 |
b |
行数;省略时表示第一行。 |
e |
行数;当e < 0时,表示倒数第e行;缺省时取到最后一行。 计算@r方式读出的Excel对象时,e必须是正整数。 |
选项:
@t |
首行是标题,有b参数时认为标题在b行。 |
@c |
返回成游标,此时Excel对象必须是用@r读出的。 |
@b |
读取时去除Excel内容前后的空白行,与@c选项组合使用时无效。 |
返回值:
序表
示例:
|
A |
|
1 |
=file("E1.xls").xlsopen() |
读取E1.xls文件,并返回excel对象:
|
2 |
=A1.xlsimport() |
无参数时,默认读取第1个sheet页的序表:
|
3 |
=A1.xlsimport@t(ID,NAME;2) |
取出第2页中列名为ID及NAME的列,并将第一行作为标题:
|
4 |
=A1.xlsimport(;"employee",10:20) |
取出名为employee的sheet页中的第10行到第20行的内容:
|
5 |
D:/excel/emp.xls |
emp.xls内容如下:
|
6 |
=file(A5).xlsopen().xlsimport@tb() |
使用@b选项,去除前后的空白行:
|