@flatfile/plugin-xlsx-extractor

中文文档
4.1.1发布于 2025/10/18ISCTypeScriptESM + CJS近 30 天下载 6.4万

在 Flatfile 中解析 xlsx 文件的插件 .

中文使用文档
文档目录5 节
  1. 参数
  2. API 调用
  3. 使用量
  4. 页眉检测
  5. 完整示例

这个 @flatfile/plugin-xlsx-extractor 插件旨在从Excel文件中提取结构化数据. 它利用各种库来解析Excel文件并高效地检索结构化数据.

事件类型 : listener.on('file:created')

支持的文件类型 : .xls, (中文(简体) ), .xlsx, (中文(简体) ), .xlsm, (中文(简体) ), .xlsb, (中文(简体) ), .xltx, (中文(简体) ), .xltm

嵌入Flatfile时,该插件应被部署在服务器侧听器中. 学多点

参数

raw - 说吧 boolean

在Excel中,您可以在文本单元格上格式化(即日期格式化). 以 默认时, Flatfile 将仅取格式化文本与原始值。 设定 此值为真取出原值而忽略其显示方式 克塞尔.

rawNumbers - 说吧 boolean

在 Excel 中,您可以在数字单元格上四舍五入或格式化为 显示两个小数位。 默认情况下, Flatfile 将只取 显示小数位相对于生数。 将此值设定为真实值 取出原始数字 并忽略如何在Excel中显示.

dateNF - 说吧 string - (可选)

这个 dateNF 参数允许您指定解析的日期格式 日期。 (即:. yyyy-mm-dd(中文(简体) )

chunkSize - 说吧 default: "10_000" - 说吧 number - (可选)

这个 chunkSize 参数允许您指定要输入的记录数量 每个块.

parallel - 说吧 default: "1" - 说吧 number - (可选)

这个 parallel 参数允许您指定要处理的块数 平行进行.

headerDetectionOptions - 说吧 Object - (可选)

这个 headerDetectionOptions 参数允许您指定选项 在文件中检测信头 。 默认情况下, 头10行被扫描 最不空格的行.

skipEmptyLines - 说吧 default: "false" - 说吧 boolean - (可选)

这个 skipEmptyLines 参数允许您指定是否为空行 跳过 默认情况下包含空行.

debug - 说吧 default: "false" - 说吧 boolean - (可选)

这个 debug 参数允许您切换打开/关闭帮助调试信件 发展目的.

cascadeRowValues - 说吧 default: "false" - 说吧 boolean - (可选)

这个 cascadeRowValues 参数自动向下级联到数据集的空白行、新值或结尾。 这对于一个列中的数值适用于下多行的分级数据有用.

cascadeHeaderValues - 说吧 default: "false" - 说吧 boolean - (可选)

这个 cascadeHeaderValues 参数将自动连入到整个标题行,直到一个空白列、新值或数据集的结尾。 这对多级标题有用,因为一个标题值适用于多列.

mergedCellOptions - 说吧 Object - (可选)

这个 mergedCellOptions 参数允许您指定在提取时如何处理合并的单元格。 可以定义不同治疗的细胞在列,行,或范围之间合并.

合并单元格矢量
  • acrossColumns: 应用到水平合并的单元格(在同一行多个列之间)
  • acrossRows: 应用到垂直合并的单元格(在同一列的多行间)
  • acrossRanges: 适用于横向和纵向合并的单元格(跨多行和列)
治疗选项

对所有向量:

  • applyToAll: 将合并的单元格值应用于未合并范围内的所有单元格
  • applyToTopLeft: 仅将合并的单元格值应用到未合并范围的左上单元格

对于 acrossColumns 财务报告和审定财务报表 acrossRows 仅限:

  • coalesce: 只保留第一行/栏并删除其他行/栏
  • concatenate: 使用分隔符( 需要) 组合来自所有单元格的值 separator 参数)

示例配置 :

mergedCellOptions: {
  acrossColumns: {
    treatment: 'concatenate',
    separator: ', '
  },
  acrossRows: {
    treatment: 'applyToAll'
  },
  acrossRanges: {
    treatment: 'applyToTopLeft'
  }
}

API 调用

  • api.files.download
  • api.files.get
  • api.files.update
  • api.jobs.ack
  • api.jobs.complete
  • api.jobs.create
  • api.jobs.fail
  • api.jobs.update
  • api.records.insert
  • api.workbooks.create

使用量

听好 Excel 文件( 所有扩展支持) 要上传到 Flatfile 。 然后平台会自动取出文件. 一旦完成,文件将准备在文件区域导入 .

npm i @flatfile/plugin-xlsx-extractor
import { ExcelExtractor } from "@flatfile/plugin-xlsx-extractor";

听众.js

listener.use(ExcelExtractor());

其他选项

listener.use(ExcelExtractor({ 
  raw: true, 
  rawNumbers: true,
  cascadeRowValues: true,
  cascadeHeaderValues: true,
  mergedCellOptions: {
    acrossColumns: {
      treatment: 'concatenate',
      separator: ', '
    },
    acrossRows: {
      treatment: 'applyToAll'
    },
    acrossRanges: {
      treatment: 'applyToTopLeft'
    }
  }
}));

页眉检测

为文件中的检测头提供了三种检测选项: default, (中文(简体) ), explicitHeaders,以及 specificRows。默认情况下,前10行会被扫描到排行中最不空的单元格。 此行后被作为标题行.

默认

它看着第一个 rowsToSearch 横行并取行 以最不空的单元格为标题,倾向于最早的单元格 这样一行,如果一个平局.

listener.use(ExcelExtractor());
// or...
listener.use(
  ExcelExtractor({
    headerDetectionOptions: {
      algorithm: "default",
      rowsToSearch: 30, // Default is 10
    },
  })
);

明确信头

这一执行只是返回它得到的明确信头清单.

listener.use(
  ExcelExtractor({
    headerDetectionOptions: {
      algorithm: "explicitHeaders",
      headers: ["fiRsT NamE", "LaSt nAme", "emAil"],
    },
  })
);

特定行

这个执行查看了具体的行并把它们合并为一个标题. 例如,如果你知道信头在第三行, 你可以通过它 { rowNumbers: [2] }。 。 。 .

listener.use(
  ExcelExtractor({
    headerDetectionOptions: {
      algorithm: "specificRows",
      rowNumbers: [2], // 0 based
    },
  })
);

数据行和子标题检测

此执行尝试检测第一个数据行并选择上一个 以行为头. 如果由于所有样本而无法检测到数据行 行是满的,不能切入数字或布尔类型,它也会尝试 检测子标题行, 在检测到标题后检查行后 用于显著的模糊匹配。 如果在可能的子标题中超过半数的字段 与最初检测到的头行相匹配的行模糊,子头行变为 新标题.

listener.use(
  ExcelExtractor({
    headerDetectionOptions: {
      algorithm: "dataRowAndSubHeaderDetection",
      rowsToSearch: 30, // Default is 10
    },
  })
);

完整示例

在这个例子中 ExcelExtractor 以可选选项初始化,然后在Flatfile收听器中注册为中间软件。 当一个 Excel 文件被上传时,插件会取出结构化的数据并使用提取器的解析器处理.

听众.js

import { ExcelExtractor } from "@flatfile/plugin-xlsx-extractor";

export default async function (listener) {
  // Define optional options for the extractor
  const options = {
    raw: true,
    rawNumbers: true,
    cascadeRowValues: true,
    cascadeHeaderValues: true,
  };

  // Initialize the Excel extractor
  const excelExtractor = ExcelExtractor(options);

  // Register the extractor as a middleware for the Flatfile listener
  listener.use(excelExtractor);

  // When an Excel file is uploaded, the data will be extracted and processed using the extractor's parser.
}

版本与发布记录

@flatfile/plugin-xlsx-extractor 共发布 84 个版本,首次发布于 2023/02/24;过去 12 个月发布了 0 个版本。

版本发布日期距今
4.1.1latest2025/10/181.1 年前
4.1.02025/10/181.1 年前
4.0.92025/08/281.2 年前
4.0.82025/08/271.2 年前
4.0.72025/08/181.2 年前
4.0.62025/08/011.3 年前

关于 @flatfile/plugin-xlsx-extractor 的常见问题

@flatfile/plugin-xlsx-extractor 是什么?

在 Flatfile 中解析 xlsx 文件的插件 .

如何安装 @flatfile/plugin-xlsx-extractor?

在项目目录运行 npm install @flatfile/plugin-xlsx-extractor,或使用 pnpm add / yarn add / bun add。它还需要宿主项目提供 peer 依赖:@flatfile/listener(^1.1.0)。npm 7 及以上与 pnpm 8 及以上默认会自动安装必需的 peer 依赖,Yarn 需要手动安装。

@flatfile/plugin-xlsx-extractor 支持 TypeScript 吗?

支持。包内自带 TypeScript 类型声明(package.json 声明了 types 入口),安装后即可获得类型提示,无需再安装 @types 包。

@flatfile/plugin-xlsx-extractor 支持 ESM 还是 CommonJS?

同时提供 ES Module 与 CommonJS 入口,import 和 require() 都可以使用,打包工具会自动选择合适的版本。

@flatfile/plugin-xlsx-extractor 需要什么版本的 Node.js?

package.json 的 engines 字段要求 Node.js >= 18。版本不符时 npm 默认只给出警告,开启 engine-strict 后会拒绝安装。

@flatfile/plugin-xlsx-extractor 可以商用吗?

@flatfile/plugin-xlsx-extractor 使用 ISC 许可。宽松许可:允许商业使用、修改和再分发,通常只需在分发时保留原版权与许可声明。以上为概括,不构成法律意见,请以许可原文为准。

@flatfile/plugin-xlsx-extractor 的下载量有多少?

根据 npm 官方下载统计,@flatfile/plugin-xlsx-extractor 在 2026/10/15 – 2026/11/13 这 30 天内被下载 64,308 次,日均约 2,144 次。下载量会把 CI 构建、镜像同步和作为其他包依赖的安装一并计入,适合横向比较热度,不能直接等同于使用人数。

@flatfile/plugin-xlsx-extractor 还在维护吗?

最新版本 4.1.1 发布于 2025/10/18(1.1 年前);至今共发布 84 个版本,其中过去 12 个月发布了 0 个;首次发布于 2023/02/24。发布频率只是参考信号:功能稳定的工具可能很少需要更新,建议结合源码仓库的 issue 和提交记录判断。