!!!###!!!title=excel导入——VisActor/VTable 教程文档!!!###!!!!!!###!!!description= !!!###!!!

数据导入插件

功能介绍

ExcelImportPlugin是一个导入插件,旨在为用户提供多格式外部数据文件的高效导入解决方案。该插件支持 Excel、CSV、JSON 和 HTML 格式的数据导入

插件说明

该插件会向table实例添加importFile方法。

  • importFile:导入文件,会弹出文件选择器,用户选择文件后,会自动导入文件数据。

如:

await tableInstance.importFile();

也可以直接调用import方法,传入文件路径,或者文件对象,或者文件内容。下面有介绍到:

支持的数据格式

  • Excel 文件
  • CSV 文件(支持自定义分隔符)
  • JSON 数据对象
  • HTML 表格数据

使用限制

当前版本不支持透视表(PivotTable)数据的导入功能。

插件配置

ExcelImportOptions

插件构造函数接受一个配置对象,该对象需要实现 ExcelImportOptions 接口。以下为完整的配置参数说明:

interface ExcelImportOptions {
  id?: string;                        // 插件实例的唯一标识符,默认会使用excel-import-plugin-${Date.now()};
  headerRowCount?: number;             // Excel 文件表头行数,仅对 Excel 格式有效,未指定时将自动检测
  exportData?: boolean;                // 是否导出为 JavaScript 对象格式,默认为 false
  autoTable?: boolean;                 // 是否自动替换表格数据,默认为 true
  autoColumns?: boolean;               // 是否自动生成列配置,默认为 true
  delimiter?: string;                  // CSV 文件分隔符,默认为英文逗号
  batchSize?: number;                  // 批处理数据行数,默认为 1000
  enableBatchProcessing?: boolean;     // 是否启用批处理模式,默认为 true
  asyncDelay?: number;                 // 异步处理延迟时间(毫秒),默认为 5
}
参数名称类型默认值说明
idstringexcel-import-plugin-${Date.now()}插件实例标识符,用于区分多个插件实例
headerRowCountnumber-指定 Excel 文件的表头行数,仅对 Excel 文件有效
exportDatabooleanfalse控制是否将数据导出为 JavaScript 对象格式
autoTablebooleantrue控制是否自动替换表格中的现有数据
autoColumnsbooleantrue控制是否根据导入数据自动生成列配置
delimiterstring','CSV 文件的字段分隔符
batchSizenumber1000批处理模式下每批处理的数据行数
enableBatchProcessingbooleantrue是否启用批处理模式以优化内存使用
asyncDelaynumber5异步处理过程中的延迟时间(毫秒)

import 方法

插件的核心方法,负责执行数据导入操作。

async import(
  type: 'file' | 'csv' | 'json' | 'html',
  source?: string | object,
  options?: Partial<ExcelImportOptions>
): Promise<ImportResult>

type(必需)

  • 类型:'file' | 'csv' | 'json' | 'html'
  • 说明:指定导入数据的类型
    • 'file':通过文件选择器导入文件
    • 'csv':导入 CSV 格式的字符串数据
    • 'json':导入 JSON 格式的数据对象
    • 'html':导入 HTML 表格格式的数据

source(可选)

  • 类型:string | object
  • 说明:数据源内容
    • type'file' 时,此参数无效
    • type'csv''html' 或者 'json'时,应传入对应格式的字符串或者对象

options(可选)

  • 类型:Partial<ExcelImportOptions>
  • 说明:运行时配置参数,会临时覆盖插件初始化时的配置

使用指南

插件初始化

首先需要创建插件实例并将其添加到 VTable 的插件配置中:

//初始化插件
const excelImportPlugin = new ExcelImportPlugin({
  exportData: true
});
const option: VTable.ListTableConstructorOptions = {
  container: document.getElementById(CONTAINER_ID),
  records,
  columns,
  theme: VTable.themes.DEFAULT,
  select: { disableSelect: false },
  plugins: [excelImportPlugin]
};

用法示例

文件导入

通过文件选择器导入本地文件:

await excelImportPlugin.import('file');

await excelImportPlugin.import('file', undefined, {
  exportData: true,
  delimiter: ';' 
});

CSV 数据导入

导入 CSV 格式的字符串数据:

const csvData1 = `姓名,年龄,部门
张三,25,技术部
李四,30,销售部
王五,28,市场部`;

await excelImportPlugin.import('csv', csvData1);

const csvData2 = `姓名;年龄;部门
张三;25;技术部
李四;30;销售部`;

await excelImportPlugin.import('csv', csvData2, {
  delimiter: ';'
});

禁用自动表格更新

仅获取数据而不自动更新表格:

const result = await excelImportPlugin.import('json', jsonData, {
  autoTable: false,
});

演示代码

本文档由以下人员贡献

抽象薯片