apoc.export.xls.query

过程 Apoc 扩展

apoc.export.xls.query(query,file,{config,…,params:{params}}) - 将 Cypher 语句的结果作为 xls 导出到提供的文件

签名

apoc.export.xls.query(query :: STRING?, file :: STRING?, config :: MAP?) :: (file :: STRING?, source :: STRING?, format :: STRING?, nodes :: INTEGER?, relationships :: INTEGER?, properties :: INTEGER?, time :: INTEGER?, rows :: INTEGER?, batchSize :: INTEGER?, batches :: INTEGER?, done :: BOOLEAN?, data :: STRING?)

输入参数

名称 类型 默认

query

STRING?

null

file

STRING?

null

config

MAP?

null

输出参数

名称 类型

file

STRING?

source

STRING?

format

STRING?

节点

整数?

relationships

整数?

属性

整数?

time

整数?

rows

整数?

batchSize

整数?

batches

整数?

done

布尔值?

data

STRING?

安装依赖

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

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

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

针对 XLS 文件

使用示例

本节中的示例基于以下示例图

CREATE (TheMatrix:Movie {title:'The Matrix', released:1999, tagline:'Welcome to the Real World'})
CREATE (Keanu:Person {name:'Keanu Reeves', born:1964})
CREATE (Carrie:Person {name:'Carrie-Anne Moss', born:1967})
CREATE (Laurence:Person {name:'Laurence Fishburne', born:1961})
CREATE (Hugo:Person {name:'Hugo Weaving', born:1960})
CREATE (LillyW:Person {name:'Lilly Wachowski', born:1967})
CREATE (LanaW:Person {name:'Lana Wachowski', born:1965})
CREATE (JoelS:Person {name:'Joel Silver', born:1952})
CREATE
(Keanu)-[:ACTED_IN {roles:['Neo']}]->(TheMatrix),
(Carrie)-[:ACTED_IN {roles:['Trinity']}]->(TheMatrix),
(Laurence)-[:ACTED_IN {roles:['Morpheus']}]->(TheMatrix),
(Hugo)-[:ACTED_IN {roles:['Agent Smith']}]->(TheMatrix),
(LillyW)-[:DIRECTED]->(TheMatrix),
(LanaW)-[:DIRECTED]->(TheMatrix),
(JoelS)-[:PRODUCED]->(TheMatrix);

下方的 Neo4j Browser 可视化显示了导入的图

play movies

apoc.export.xls.query 存储过程将 Cypher 查询的结果导出到 XLS 文件中。

以下查询将所有 DIRECTED 关系以及该关系两侧带有 PersonMovie 标签的节点导出到文件 movies-directed.csv

WITH "MATCH path = (person:Person)-[:DIRECTED]->(movie)
      RETURN person.name AS name, person.born AS born,
             movie.title AS title, movie.tagline AS tagline, movie.released AS released" AS query
CALL apoc.export.xls.query(query, "movies-directed.xls", {})
YIELD file, source, format, nodes, relationships, properties, time, rows, batchSize, batches, done, data
RETURN file, source, format, nodes, relationships, properties, time, rows, batchSize, batches, done, data;
表 1. 结果
file source format 节点 relationships 属性 time rows batchSize batches done data

"movies-directed.xls"

"statement: cols(5)"

"xls"

0

0

0

12

0

20000

1

TRUE

NULL

movies-directed.xls 包含一个名为 Sheet0 的工作表。

我们可以使用 apoc.load.xls 查询该工作表的内容。让我们看看其中几个工作表:

CALL apoc.load.xls("file://movies-directed.xls", "Sheet0");
表 2. 结果
行号 list Map

0

["Lilly Wachowski", 1967, "The Matrix", "Welcome to the Real World", 1999]

{name: "Lilly Wachowski", tagline: "Welcome to the Real World", title: "The Matrix", released: 1999, born: 1967}

1

["Lana Wachowski", 1965, "The Matrix", "Welcome to the Real World", 1999]

{name: "Lana Wachowski", tagline: "Welcome to the Real World", title: "The Matrix", released: 1999, born: 1965}

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