apoc.export.xls.graph
过程 Apoc 扩展
apoc.export.xls.graph(graph,file,config) - 将给定图对象作为 xls 导出到提供的文件
签名
apoc.export.xls.graph(graph :: MAP?, 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.graph 过程将虚拟图导出为 CSV 文件或数据流。
本节中的示例基于一个包含所有 PRODUCED 关系及该关系两端节点的虚拟图。然后,我们可以将该虚拟图导出为 movies-producers.xls
MATCH path = (:Person)-[produced:PRODUCED]->(:Movie)
WITH collect(path) AS paths
CALL apoc.graph.fromPaths(paths, "producers", {})
YIELD graph AS g
CALL apoc.export.xls.graph(g, "movies-producers.xls", {})
YIELD file, nodes, relationships, properties
RETURN file, nodes, relationships, properties;
| file | 节点 | relationships | 属性 |
|---|---|---|---|
"movies-producers.xls" |
2 |
1 |
5 |
movies-producers.xls 包含针对每个节点标签和关系类型的独立工作表。在本例中,它包含以下工作表
-
Movie
-
Person
-
PRODUCED
我们可以使用 apoc.load.xls 查询这些工作表的内容。让我们查看其中的几个工作表
CALL apoc.load.xls("file://movies-producers.xls", "Person");
| 行号 | list | Map |
|---|---|---|
0 |
[7, 1952, "Joel Silver"] |
{name: "Joel Silver", |
CALL apoc.load.xls("file://movies-producers.xls", "PRODUCED");
| 行号 | list | Map |
|---|---|---|
0 |
[6, 7, 0] |
{ |