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?)
输出参数
| 名称 | 类型 |
|---|---|
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 目录中)
使用示例
本节中的示例基于以下示例图
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 可视化显示了导入的图
apoc.export.xls.query 存储过程将 Cypher 查询的结果导出到 XLS 文件中。
以下查询将所有 DIRECTED 关系以及该关系两侧带有 Person 和 Movie 标签的节点导出到文件 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;
| 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");
| 行号 | 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} |