前端表格解析方法

诗林  高级会员 | 2024-7-20 22:24:05 | 显示全部楼层 | 阅读模式
打印 上一主题 下一主题

主题 227|帖子 227|积分 681

工具类文件
  1. // fileUtils.ts
  2. import { ref } from 'vue';
  3. import * as xlsx from 'xlsx';
  4. interface RowData {
  5.   [key: string]: any;
  6. }
  7. export const tableData = ref<RowData[]>([]);
  8. export async function handleFileSelect(url: string): Promise<void> {
  9.   try {
  10.     const response = await fetch(url);
  11.     const blob = await response.blob();
  12.     const reader = new FileReader();
  13.     reader.onload = (e: ProgressEvent<FileReader>) => {
  14.       if (e.target && e.target.result) {
  15.         const data = new Uint8Array(e.target.result as ArrayBuffer);
  16.         const workbook = xlsx.read(data, { type: 'array' });
  17.         const worksheet = workbook.Sheets[workbook.SheetNames[0]];
  18.         const jsonData = xlsx.utils.sheet_to_json(worksheet, { header: 1 }) as any[][];
  19.         // 提取标题并保持其顺序
  20.         const headers = jsonData[0];
  21.         console.log('Extracted Headers:', headers);
  22.         // 处理行(从索引1开始跳过标题)
  23.         jsonData.slice(1).forEach((row) => {
  24.           const rowData: RowData = {};
  25.           headers.forEach((header, index) => {
  26.             rowData[header] = row[index];
  27.           });
  28.           tableData.value.push(rowData);
  29.         });
  30.         console.log('Processed Table Data:', tableData.value);
  31.       }
  32.     };
  33.     reader.readAsArrayBuffer(blob);
  34.   } catch (error) {
  35.     console.error('获取或读取文件时出错:', error);
  36.   }
  37. }
复制代码
调用方法
  1. const url ='https://xxxxx.xlsx';
  2.     await handleFileSelect(url);
复制代码


免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

x
回复

使用道具 举报

0 个回复

倒序浏览

快速回复

您需要登录后才可以回帖 登录 or 立即注册

本版积分规则

诗林

高级会员
这个人很懒什么都没写!

标签云

快速回复 返回顶部 返回列表