还在为处理 PDF、CSV、Excel 等各种文件格式而烦恼?本教程将带你深入了解 n8n 中最实用的节点之一——Extract From File。无论是提取 PDF 中的文本、解析 CSV 表格数据,还是提取 HTML 内容,这个节点都能帮你轻松搞定。跟着我一步步学习,你将能够快速上手,并创建属于自己的自动化文件处理工作流!
Extract From File 节点是 n8n 中的一个核心数据处理工具,它的主要作用是:
想象一个场景:你的客户通过邮件发送了一份 PDF 发票,你需要:
如果没有 Extract From File 节点,这些工作需要编写复杂的代码。有了它,你只需简单配置几个参数,就能完成整个流程!
Extract From File 节点支持丰富的文件格式,每种格式都有特定的应用场景:
| 文件类型 | 操作选项 | 主要应用场景 | 输出格式 |
|---|---|---|---|
| CSV | 从 CSV 提取 | 处理表格数据、用户列表、产品目录 | JSON 数组对象 |
| HTML | 从 HTML 提取 | 网页内容解析、报告提取 | 结构化文本/表格 |
| 从 PDF 提取 | 发票、合同、文档扫描 | 纯文本内容 | |
| Excel | 从 XLS/XLSX 提取 | 电子表格数据处理 | JSON 数组对象 |
| JSON | 从 JSON 提取 | 二进制 JSON 文件处理 | 结构化 JSON |
| ICS | 从 ICS 提取 | 日历事件提取 | 事件数据数组 |
| ODS | 从 ODS 提取 | OpenDocument 表格处理 | JSON 数组对象 |
| RTF | 从 RTF 提取 | 富文本文档处理 | 文本内容 |
| 文本文件 | 从文本文件提取 | 日志分析、文本处理 | 纯文本/结构化数据 |
| 二进制数据 | Base64 转换 | 跨系统传输、数据存储 | Base64 编码字符串 |
在开始使用 Extract From File 节点前,你需要了解一个完整的文件处理工作流包含三个环节:
Extract From File 节点主要有两个配置参数:
data(大多数情况下使用默认值)你的 HR 部门定期通过邮件发送包含员工信息的 CSV 文件,需要自动提取这些数据并导入系统。
第 1 步:创建 Webhook 节点接收文件
第 2 步:添加 Extract From File 节点
Extract From CSVdataemployees第 3 步:处理提取的数据
公司收到大量 PDF 发票,需要自动从中提取关键信息(发票号、金额、日期)。
第 1 步:获取 PDF 文件
第 2 步:提取 PDF 内容
Extract From PDFdata第 3 步:数据清洗与结构化
\bINV-\d{6}\b\$?\d+,?\d{0,2}第 4 步:存储结果
原始 PDF 文本:
"Invoice Number: INV-202412-001
Date: 2024-12-02
Amount: $1,500.00
Customer: Acme Corp"
提取后的 JSON:
{
"invoiceNo": "INV-202412-001",
"date": "2024-12-02",
"amount": "1500.00",
"customer": "Acme Corp"
}症状:Webhook 接收不到文件内容
解决方案:
data症状:提取的内容乱码或为空
解决方案:
症状:节点报错"Cannot find field"
解决方案:
{{ $json }} 表达式查看完整数据结构以下是一个完整的、可以直接导入 n8n 的工作流示例,展示如何通过 Webhook 接收 CSV 文件、提取数据、进行数据处理,最后保存到 Google Sheets。
这个工作流实现了以下功能:
将以下 JSON 代码直接导入到 n8n 中(操作方式:在工作流编辑器中选择 Import from file,粘贴下方代码):
{
"name": "CSV 文件处理自动化工作流",
"nodes": [
{
"parameters": {
"path": "webhook",
"options": {
"rawBody": true
}
},
"id": "webhook-node",
"name": "Webhook",
"type": "n8n-nodes-base.webhook",
"typeVersion": 1,
"position": [250, 300]
},
{
"parameters": {
"operation": "extractfromcsv",
"binaryPropertyName": "data"
},
"id": "extract-csv-node",
"name": "Extract From CSV",
"type": "n8n-nodes-base.extractfromfile",
"typeVersion": 1,
"position": [450, 300]
},
{
"parameters": {
"mode": "immediate",
"json": {
"status": "success",
"message": "CSV 数据已成功提取",
"records_count": "={{ $input.all().length }}",
"data": "={{ $input.all() }}"
}
},
"id": "set-node",
"name": "Set Data",
"type": "n8n-nodes-base.set",
"typeVersion": 1,
"position": [650, 300]
},
{
"parameters": {
"responseCode": 200,
"responseData": "={{ $json }}"
},
"id": "response-node",
"name": "Response",
"type": "n8n-nodes-base.respondToWebhook",
"typeVersion": 1,
"position": [850, 300]
}
],
"connections": {
"webhook-node": {
"main": [
[
{
"node": "extract-csv-node",
"type": "main",
"index": 0
}
]
]
},
"extract-csv-node": {
"main": [
[
{
"node": "set-node",
"type": "main",
"index": 0
}
]
]
},
"set-node": {
"main": [
[
{
"node": "response-node",
"type": "main",
"index": 0
}
]
]
}
}
}步骤 1:复制上面的 JSON 代码
步骤 2:在 n8n 中创建新工作流,点击右上角菜单 → "Import from file"
步骤 3:粘贴 JSON 代码并导入
步骤 4:激活工作流并获取 Webhook URL
步骤 5:使用 Postman 或 curl 测试:
# 使用 curl 上传 CSV 文件
curl -X POST http://your-webhook-url \
-F "data=@your-file.csv"步骤 6:查看响应,你会看到如下的 JSON 输出:
{
"status": "success",
"message": "CSV 数据已成功提取",
"records_count": 10,
"data": [
{
"name": "张三",
"email": "zhangsan@example.com",
"department": "研发部"
},
{
"name": "李四",
"email": "lisi@example.com",
"department": "销售部"
}
// ... 更多记录
]
}当处理超过 100MB 的文件时:
// 在 Code 节点中使用批处理
const BATCH_SIZE = 1000;
const items = $input.all();
const batches = [];
for (let i = 0; i < items.length; i += BATCH_SIZE) {
batches.push(items.slice(i, i + BATCH_SIZE));
}
return batches.map(batch => ({ json: batch }));添加 Try-Catch 机制:
try {
const extracted = $input.item.json;
// 进行数据验证
if (!extracted || extracted.length === 0) {
throw new Error("提取的数据为空");
}
return { json: extracted };
} catch (error) {
return {
json: {
error: true,
message: error.message,
timestamp: new Date().toISOString()
}
};
}使用 Switch 节点根据文件类型选择不同的提取操作:
// 在 Switch 节点中使用
const fileType = $input.item.json.fileType;
if (fileType === 'csv') {
// 路由到 CSV 提取
return [0];
} else if (fileType === 'pdf') {
// 路由到 PDF 提取
return [1];
} else if (fileType === 'xlsx') {
// 路由到 Excel 提取
return [2];
}{{ $json }} 查看数据结构从邮件附件中提取 PDF 发票 → 提取发票数据 → 自动入账 → 发送确认邮件
接收用户上传的 CSV 文件 → 验证和清洗数据 → 导入到 CRM 系统 → 发送导入报告
获取网页 HTML → 提取结构化数据 → 保存到数据库 → 触发后续分析
从不同来源收集多种格式文件 → 统一提取 → 转换为标准格式 → 集中存储
通过本教程,你已经掌握了:
✅ Extract From File 节点的核心概念
✅ 支持的 15+ 种文件格式
✅ 快速配置和使用方法
✅ 常见错误的排查技巧
✅ 完整的可执行工作流示例
✅ 进阶应用和最佳实践
[1] 官方文档: https://docs.n8n.io/integrations/builtin/core-nodes/n8n-nodes-base.extractfromfile/
[2] n8n系列教程: https://www.undsky.com/blog/?category=n8n%E6%95%99%E7%A8%8B#