Skip to content

Excel 异步数据导入组件

FileUpload.vue 作为一个独立的数据预处理单元,核心职责是将非结构化的 Office 文件(XLSX/CSV)转换为标准化的二维数值矩阵 number[][],并执行初步的 ETL(提取、转换、加载)逻辑。


该组件采用无状态设计,通过 Props 注入配置,通过 Emits 回传清洗后的数据。

异步 Buffer 处理

利用 FileReader.readAsArrayBuffer 异步读取文件,避免大文件解析阻塞主线程(UI Thread)。

Drag & Drop 增强

封装原生 HTML5 Drag API,通过状态变量 isDragging 实现交互样式的动态反馈。

类型预测与清洗

在渲染前执行 parseFloat 强制类型转换,并结合 filter 算子过滤脏数据。

  1. 文件校验:基于文件后缀名(Extension)执行初步白名单过滤。
  2. 流式读取:将二进制流加载至内存缓冲区。
  3. 矩阵转换:调用 xlsx 库的 sheet_to_json 将 Sheet 对象转换为二维数组。
  4. 流水线清洗:执行行列级联过滤,剔除非数值项。
  5. 上行通知:通过 emit 将结构化数据推送至父级作用域。

属性名类型描述
labelstring上传区域的占位文本
hasDataboolean父组件透传的数据存在状态
swalConfigobject注入的全局样式配置对象
事件名载荷类型触发逻辑
upload-successnumber[][]完成 ETL 清洗后的数据矩阵
clearvoid清空内部缓存触发