前端表格解析方法

工具类文件

javascript 复制代码
// fileUtils.ts

import { ref } from 'vue';
import * as xlsx from 'xlsx';

interface RowData {
  [key: string]: any;
}

export const tableData = ref<RowData[]>([]);

export async function handleFileSelect(url: string): Promise<void> {
  try {
    const response = await fetch(url);
    const blob = await response.blob();
    const reader = new FileReader();

    reader.onload = (e: ProgressEvent<FileReader>) => {
      if (e.target && e.target.result) {
        const data = new Uint8Array(e.target.result as ArrayBuffer);
        const workbook = xlsx.read(data, { type: 'array' });

        const worksheet = workbook.Sheets[workbook.SheetNames[0]];
        const jsonData = xlsx.utils.sheet_to_json(worksheet, { header: 1 }) as any[][];

        // 提取标题并保持其顺序
        const headers = jsonData[0];
        console.log('Extracted Headers:', headers);

        // 处理行(从索引1开始跳过标题)
        jsonData.slice(1).forEach((row) => {
          const rowData: RowData = {};
          headers.forEach((header, index) => {
            rowData[header] = row[index];
          });
          tableData.value.push(rowData);
        });

        console.log('Processed Table Data:', tableData.value);
      }
    };

    reader.readAsArrayBuffer(blob);
  } catch (error) {
    console.error('获取或读取文件时出错:', error);
  }
}

调用方法

javascript 复制代码
const url ='https://xxxxx.xlsx';
    await handleFileSelect(url);
相关推荐
静水leo1 小时前
使用 Whistle 拦截接口并模拟后端响应
前端
掘金者阿豪2 小时前
SQL Server数据迁移完成后,凌晨的数据库告警该怎么查?
前端·后端
JudithHuang2 小时前
React 嵌套路由与布局
前端·react.js·arcgis·react·react router
htzyl2062 小时前
前端阶梯——第四十三章、实战二:待办清单To-Do
前端·javascript·html
摹客3 小时前
【3D设计】界面设计中的3D元素:应用场景+5款工具横评(含Three.js)
前端
Hilaku3 小时前
CORS 到底在保护谁?90% 的前端理解错了跨域的本质
前端·javascript·程序员
wno7043 小时前
node.js中使用jquery
前端·node.js·jquery
阿琳a_3 小时前
b-map-viewer:面向 Vue 3 的地图可视化 SDK,从接入到展示再到交互分析
前端·javascript·vue.js·gis·数据可视化·地图
10年前端老司机3 小时前
Agent 商业化困局:热闹的发布会,冷清的付费客户
前端·后端·agent