加载 Excel (XLS)

库要求

对于加载 XLS,我们使用 Apache POI 库,它可以很好地与旧版和新版 Excel 格式兼容,但尺寸相当大。这就是我们决定不将其包含在 apoc jar 中,而是将其作为可选依赖项的原因。

这些依赖项包含在 apoc-xls-dependencies-5.21.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})

{config} 参数是一个映射

name description

mapping

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

<sheet>

工作表名称

<type>

默认 String,请求转换的类型(STRINGINTEGERFLOATBOOLEANNULLLISTDATEDATE_TIMELOCAL_DATELOCAL_DATE_TIMELOCAL_TIMETIME

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 函数描述的模式。

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. 结果