前端表格解析方法

工具类文件

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);
相关推荐
军军君012 分钟前
Three.js基础功能学习七:加载器与管理器
开发语言·前端·javascript·学习·3d·threejs·三维
JarvanMo4 分钟前
情迷服务器驱动 UI:我在 Flutter 开发中的爱与哀愁
前端
tzy2337 分钟前
分享一个 HTTP(S) 代理&抓包工具,拦截和Mock Web客户端请求和服务端响应
前端·网络协议·http
代码小学僧12 分钟前
普通前端仔的 2025 : 年终总结与 AI 对我的影响
前端·程序员·ai编程
Mike_jia19 分钟前
TCP 粘包/拆包问题
前端
沐墨染26 分钟前
敏感词智能检索前端组件设计:树形组织过滤与多维数据分析
前端·javascript·vue.js·ui·数据挖掘·数据分析
Kagol28 分钟前
🎉TinyPro v1.4.0 正式发布:支持 Spring Boot、移动端适配、新增卡片列表和高级表单页面
前端·typescript·开源
李少兄29 分钟前
B/S 架构:现代 Web 应用的核心架构模式
前端·架构·b/s
鹏程十八少42 分钟前
破解Android悬浮窗遮挡无障碍服务难题:我在可见即可说上踩过的坑
android·前端·面试
Kapaseker1 小时前
前端已死...了吗
android·前端·javascript