apoc.load.xls
过程 Apoc 扩展
apoc.load.xls('url','selector',{config}) YIELD lineNo, list, map - 以行值流形式从 URL 加载 XLS,配置包含以下任何项:{skip:1,limit:5,header:false,ignore:['tmp'],arraySep:';',mapping:{years:{type:'int',arraySep:'-',array:false,name:'age',ignore:false, dateFormat:'iso_date', dateParse:['dd-MM-yyyy']}}
签名
apoc.load.xls(url :: STRING?, selector :: STRING?, config = {} :: MAP?) :: (lineNo :: INTEGER?, list :: LIST? OF ANY?, map :: MAP?)
配置参数
该过程支持以下配置参数
| 名称 (name) | type | 默认 | description(描述) |
|---|---|---|---|
skip |
boolean |
none |
跳过结果行 |
limit |
Long |
none |
限制结果行 |
header(标题行) |
布尔值 |
true |
指示文件是否有标题行 |
sep(分隔符) |
字符串 |
',' |
分隔符字符或 'TAB' |
quoteChar(引号字符) |
字符串 |
'"' |
用于引用元素的字符 |
arraySep(数组分隔符) |
字符串 |
';' |
数组分隔符 |
ignore(忽略) |
List<String> |
[] |
要忽略的列 |
nullValues(空值) |
List<String> |
[] |
要视为 null 的值,例如 |
mapping(映射) |
Map |
{} |
逐字段映射,条目键为字段名,例如 |
mapping 支持以下值
-
<sheet>- 工作表名称 -
<type>- 所需转换的类型(STRING,INTEGER,FLOAT,BOOLEAN,NULL,LIST,DATE,DATE_TIME,LOCAL_DATE,LOCAL_DATE_TIME,LOCAL_TIME,TIME) -
dateFormat: <format>- 将日期转换为字符串(仅允许字符串) -
dateParse: [<formats>]- 将字符串转换为日期(允许字符串数组)
安装依赖
为了加载 XLS 文件,我们使用了 Apache POI 库,它能很好地处理旧版和新版 Excel 格式,但体积较大。因此我们决定不将其包含在 apoc jar 包中,而是将其作为可选依赖项。
这些依赖项已包含在 apoc-xls-dependencies-2025.10.0-all.jar 中,可从 发布页面 下载。下载该文件后,应将其放置在 plugins 目录中并重启 Neo4j 服务器。
或者,您可以从 Maven 仓库下载这些 jar 包(同样需要放入 plugins 目录中)
使用示例
CALL apoc.load.xls("https://github.com/neo4j-contrib/neo4j-apoc-procedures/raw/2025.0/extended/src/test/resources/load_test.xls",
'Full',{ mapping: {
Integer:{type:'int'},
Array:{type:'int',array:true,arraySep:';'}
}});
| 行号 | list | Map |
|---|---|---|
0 |
["Test", TRUE, 2, 1.5, [1, 2, 3]] |
{Integer: 2, Array: [1, 2, 3], Float: 1.5, String: "Test", Boolean: TRUE} |
CALL apoc.load.xls("https://github.com/neo4j-contrib/neo4j-apoc-procedures/raw/2025.0/extended/src/test/resources/load_test.xls",
'Kids'
);
| 行号 | list | Map |
|---|---|---|
0 |
["Selma", 8] |
{name: "Selma", age: 8} |
1 |
["Rana", 11] |
{name: "Rana", age: 11} |
2 |
["Selina", 18] |
{name: "Selina", age: 18} |
一些关于 type/dateFormat 和 dateParse 的示例
CALL apoc.load.xls('https://github.com/neo4j-contrib/neo4j-apoc-procedures/raw/2025.0/extended/src/test/resources/test_date.xlsx',
'sheet',{ mapping:{
Date:{type:'String'}
}});
| 行号 | list | Map |
|---|---|---|
0 |
["2018/05/10", "2018/10/05", "Alan"] |
{Data: "2018/10/05", Date: "2018/05/10", Name: "Alan"} |
1 |
["2018-09-10T00:00:00", 2018-10-10T00:00, "Jack"] |
{Data: 2018-10-10T00:00, Date: "2018-09-10T00:00:00", Name: "Jack"} |
2 |
["2018/05/10 12:10:10", 2018-10-10T00:00, 2018-10-10T00:00] |
{Data: 2018-10-10T00:00, Date: "2018/05/10 12:10:10", Name: 2018-10-10T00:00} |
3 |
[NULL, 2018-10-10T00:00, 1899-12-31T12:01:10] |
{Data: 2018-10-10T00:00, Date: NULL, Name: 1899-12-31T12:01:10} |
4 |
["2011-01-01T12:00:00.05381+01:00", NULL, NULL] |
{Data: NULL, Date: "2011-01-01T12:00:00.05381+01:00", Name: NULL} |
CALL apoc.load.xls('https://github.com/neo4j-contrib/neo4j-apoc-procedures/raw/2025.0/extended/src/test/resources/test_date.xlsx',
'sheet', { mapping: {
Date:{type:'String',dateFormat:'iso_date'}
}});
| 行号 | list | Map |
|---|---|---|
0 |
["2018/05/10", "2018/10/05", "Alan"] |
{Data: "2018/10/05", Date: "2018/05/10", Name: "Alan"} |
1 |
["2018-09-10", 2018-10-10T00:00, "Jack"] |
{Data: 2018-10-10T00:00, Date: "2018-09-10", Name: "Jack"} |
2 |
["2018/05/10 12:10:10", 2018-10-10T00:00, 2018-10-10T00:00] |
{Data: 2018-10-10T00:00, Date: "2018/05/10 12:10:10", Name: 2018-10-10T00:00} |
3 |
[NULL, 2018-10-10T00:00, 1899-12-31T12:01:10] |
{Data: 2018-10-10T00:00, Date: NULL, Name: 1899-12-31T12:01:10} |
4 |
["2011-01-01T12:00:00.05381+01:00", NULL, NULL] |
{Data: NULL, Date: "2011-01-01T12:00:00.05381+01:00", Name: NULL} |
CALL apoc.load.xls('https://github.com/neo4j-contrib/neo4j-apoc-procedures/raw/2025.0/extended/src/test/resources/test_date.xlsx',
'sheet',{ mapping:{
Date:{type:'String',dateParse:["wrongPath", "dd-MM-yyyy", "dd/MM/yyyy", "yyyy/MM/dd", "yyyy/dd/MM", "yyyy-dd-MM'T'hh:mm:ss"]}
}});
| 行号 | list | Map |
|---|---|---|
0 |
["2018/05/10", "2018/10/05", "Alan"] |
{Data: "2018/10/05", Date: "2018/05/10", Name: "Alan"} |
1 |
["2018-09-10T00:00:00", 2018-10-10T00:00, "Jack"] |
{Data: 2018-10-10T00:00, Date: "2018-09-10T00:00:00", Name: "Jack"} |
2 |
["2018/05/10 12:10:10", 2018-10-10T00:00, 2018-10-10T00:00] |
{Data: 2018-10-10T00:00, Date: "2018/05/10 12:10:10", Name: 2018-10-10T00:00} |
3 |
[NULL, 2018-10-10T00:00, 1899-12-31T12:01:10] |
{Data: 2018-10-10T00:00, Date: NULL, Name: 1899-12-31T12:01:10} |
4 |
["2011-01-01T12:00:00.05381+01:00", NULL, NULL] |
{Data: NULL, Date: "2011-01-01T12:00:00.05381+01:00", Name: NULL} |