当前位置: 首页 > article >正文

纯前端实现导入excel数据

准备工作 - 下载 xlsx

npm install xlsx

下面直接上代码👇

<template>
	<div>
		<input type="file" accept=".xlsx, .xls" @change="handleClick">
	</div>
</template>

<script lang='ts' setup>
import * as XLSX from 'xlsx'

const handleClick = async (e) => {
    const res = await readerData(e.target.files[0])
    console.log(res); // 获取的数据格式 { header: [], results: [{}] }
}

// 纯前端导入excel
const readerData = (rawFile) => {
    return new Promise((resolve, reject) => {
        // 创建一个文件读取的实例
        const reader = new FileReader()
        reader.onload = e => { // onload是加载完实例后执行(异步)
            const data = e.target.result
            const workbook = XLSX.read(data, { type: 'array' })
            // 获取一张表的表名
            const firstSheetName = workbook.SheetNames[0]
            // 根据表名拿到表里面的内容
            const worksheet = workbook.Sheets[firstSheetName]
            // 解析成json
            const results = XLSX.utils.sheet_to_json(worksheet)
            // 获取表头数据
            const header = getHeaderRow(worksheet)
            resolve({ header, results })
        }
        // 读取成一个Buffer格式文件
        reader.readAsArrayBuffer(rawFile)
    })
}

// 获取表头数据
const getHeaderRow = (sheet) => {
    const headers = []
    const range = XLSX.utils.decode_range(sheet['!ref'])
    let C
    const R = range.s.r
    /* start in the first row */
    for (C = range.s.c; C <= range.e.c; ++C) { /* walk every column in the range */
        const cell = sheet[XLSX.utils.encode_cell({ c: C, r: R })]
        /* find the cell in the first row */
        let hdr = 'UNKNOWN ' + C // <-- replace with your desired default
        if (cell && cell.t) hdr = XLSX.utils.format_cell(cell)
        headers.push(hdr)
    }
    return headers
}
</script>

http://www.kler.cn/news/149673.html

相关文章:

  • 【解决视觉引导多个位置需要标定多个位置的问题】
  • C++ cmake脚本链接Boost库
  • 网关路由器双栈配置中的IPv6相关选项解析
  • 【学习记录】从0开始的Linux学习之旅——编译linux内核
  • OpenAI 画图工具 DALL E 相关分享
  • python:类中静态方法,类方法和实例方法的使用与区别
  • 拼多多刷新Q3财报纪录,大涨18%股价直逼阿里
  • 网络篇---第五篇
  • uniapp基础-教程之HBuilderX配置篇-01
  • 数据结构:哈希表讲解
  • 《大话设计模式》(持续更新中)
  • MSI Center,XBox从任务栏取消固定
  • 基于ssm亚盛汽车配件销售业绩管理系统
  • 华清远见嵌入式学习——C++——作业2
  • 蓝桥杯每日一题2023.11.28
  • vmware下ubuntu 22.04从主机复制出错
  • 【LeeCode】35.搜索插入位置
  • 【Android Gradle】之一小时 Gradle及 wrapper 入门
  • 软件工程理论与实践 (吕云翔) 第十一章: 软件编程课后习题及其答案解析
  • VirtualBox 7.0.8(虚拟机软件)
  • 数据结构 / day06 作业
  • c++基础----new
  • IDEA编译器的永久试用设置与基本使用
  • C++,请问为什么力扣题704中,取数组的长度,使用sizeof()/4在运行时候没有报错,但是提交之后报数组越界的错误呢?使用size又可以了
  • Java---多态
  • SRE体系建设指南
  • 代理模式-C++实现
  • Python 装饰器与偏函数
  • 又有两大巨头官宣加入鸿蒙, 鸿蒙已成, 华为余承东说得没错
  • 五、cookie、session、token、localstroage、sessionStroage区别