加载 Excel (XLS)

库要求

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

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

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

针对 XLS 文件

使用

apoc.load.xls 的用法与 apoc.load.csv 类似,主要区别在于它能够选择工作表或工作表中的某个范围进行加载。

您可以按名称(如 'Kids')选择工作表,也可以按偏移量(如 'Results!B2:F3')选择。

CALL apoc.load.xls({url}, {工作表名称}, {配置})

{config} 参数是一个映射 (map)

名称 (name) description(描述)

mapping(映射)

{mapping:{'<sheet>':{type:'<type>', dateFormat: '<format>', dateParse: [<formats>]}}}

<sheet>

工作表的名称

<type>

默认类型为 String,请求转换的类型(STRING, INTEGER, FLOAT, BOOLEAN, NULL, LIST, DATE, DATE_TIME, LOCAL_DATE, LOCAL_DATE_TIME, LOCAL_TIME, TIME

dateFormat: <format>

将日期转换为字符串(仅允许字符串格式)

dateParse: [<formats>]

将字符串转换为日期(允许使用字符串数组)

header(标题行)

指示文件是否包含标题(默认:true)

skipNulls

当列标题没有值时,将标题值映射为 "Empty__<NumberRow>" 字符串;当遇到空行(位于 Excel 文件内容末尾之前)时,将其映射为带有空值的 Map。默认为 false,即:如果是标题缺失,会报错 java.lang.IllegalStateException: Header at position N doesn’t have a value;如果是空行,则会停止迭代。

firstCellNum

用于在标题开头有一个或多个空值时强制指定起始单元格行号。例如:emptyCell | emptyCell | valueFoo | valueBar | valueBaz。默认值为 Row.getFirstCellNum()

lastCellNum

用于在标题末尾有一个或多个空值时强制指定结束单元格行号。例如:valueFoo | valueBar | valueBaz | emptyCell | emptyCell。默认值为 Row.getLastCellNum()

在 dateParse 中,匹配到的第一个格式将返回格式化后的日期,否则将返回错误

format 配置中,可以使用时间函数 (Temporal functions) 中描述的模式。

apoc.load.xls 示例

CALL apoc.load.xls('file:///path/to/file.xls','Full',{mapping:{Integer:{type:'int'}, Array:{type:'int',array:true,arraySep:';'}}})
apoc.load.xls
CALL apoc.load.xls('http://bit.ly/2nXgHA2','Kids')

关于 type/dateFormat 和 dateParse 的一些示例

CALL apoc.load.xls('test_date.xlsx','sheet',{mapping:{Date:{type:'String'}}})
apoc.load.xls 1
图 1. 结果
CALL apoc.load.xls('test_date.xlsx','sheet',{mapping:{Date:{type:'String',dateFormat:'iso_date'}}})
apoc.load.xls 2
图 2. 结果
CALL apoc.load.xls('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"]}}})
apoc.load.xls 3
图 3. 结果
© . This site is unofficial and not affiliated with Neo4j, Inc.