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?)

输入参数

名称 类型 默认

url

STRING?

null

selector

STRING?

null

config

MAP?

{}

配置参数

该过程支持以下配置参数

表 1. 配置参数
名称 (name) type 默认 description(描述)

skip

boolean

none

跳过结果行

limit

Long

none

限制结果行

header(标题行)

布尔值

true

指示文件是否有标题行

sep(分隔符)

字符串

','

分隔符字符或 'TAB'

quoteChar(引号字符)

字符串

'"'

用于引用元素的字符

arraySep(数组分隔符)

字符串

';'

数组分隔符

ignore(忽略)

List<String>

[]

要忽略的列

nullValues(空值)

List<String>

[]

要视为 null 的值,例如 ['na',false]

mapping(映射)

Map

{}

逐字段映射,条目键为字段名,例如 {mapping:{'<sheet>':{type:'<type>', dateFormat: '<format>', dateParse: [<formats>]}}}

mapping 支持以下值

  • <sheet> - 工作表名称

  • <type> - 所需转换的类型(STRING, INTEGER, FLOAT, BOOLEAN, NULL, LIST, DATE, DATE_TIME, LOCAL_DATE, LOCAL_DATE_TIME, LOCAL_TIME, TIME

  • dateFormat: <format> - 将日期转换为字符串(仅允许字符串)

  • dateParse: [<formats>] - 将字符串转换为日期(允许字符串数组)

输出参数

名称 类型

行号

整数?

list

LIST? OF ANY?

Map

MAP?

安装依赖

为了加载 XLS 文件,我们使用了 Apache POI 库,它能很好地处理旧版和新版 Excel 格式,但体积较大。因此我们决定不将其包含在 apoc jar 包中,而是将其作为可选依赖项。

这些依赖项已包含在 apoc-xls-dependencies-2025.10.0-all.jar 中,可从 发布页面 下载。下载该文件后,应将其放置在 plugins 目录中并重启 Neo4j 服务器。

或者,您可以从 Maven 仓库下载这些 jar 包(同样需要放入 plugins 目录中)

针对 XLS 文件

使用示例

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:';'}
}});
表 2. 结果
行号 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'
);
表 3. 结果
行号 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'}
}});
表 4. 结果
行号 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'}
}});
表 5. 结果
行号 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"]}
}});
表 6. 结果
行号 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}

© . This site is unofficial and not affiliated with Neo4j, Inc.