ToB企服应用市场:ToB评测及商务社交产业平台

标题: 前端表格解析方法 [打印本页]

作者: 诗林    时间: 2024-7-20 22:24
标题: 前端表格解析方法
工具类文件
  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企服之家,中国第一个企服评测及商务社交产业平台。




欢迎光临 ToB企服应用市场:ToB评测及商务社交产业平台 (https://dis.qidao123.com/) Powered by Discuz! X3.4