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

Vue实现纯前端导入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/149350.html

相关文章:

  • FFmpeg介绍
  • PHPStudy开发环境解决:启动报错 class websocket/server not found
  • 【问题系列】消费者与MQ连接断开问题解决方案(二)
  • Python的哈希映射:字典
  • API网关
  • Java中的mysql——面试题+答案——第24期
  • 苹果提醒事项怎么用?几个简单步骤就能学会!
  • Hadoop集群升级(3.1.3 -> 3.2.4)
  • 图表控件LightningChart .NET中文教程 - 如何创建WPF 2D热图?(二)
  • C#中的async/await异步编程模型
  • 使用git下载远程所有分支到本地
  • SpringBoot+网易邮箱登录注册
  • Rabbitmq发送邮件并消费邮件
  • Node.js下载安装教程
  • 开放式耳机性价比排行榜、开放式耳机性价比排行榜前十
  • 数据库常见的数据模型
  • 初识《树》
  • 如何运行C/C++程序
  • Mysql单表查询练习
  • Fabric:搭建自定义网络
  • 从戴森发明的“球轮手推车”看专利
  • docker镜像管理命令
  • HCIA-Datacom跟官方路线学习第二部分
  • Vue.js 的生命周期
  • 深入了解Java8新特性-日期时间API:OffsetDateTime类
  • MySQL双主双从数据库集群搭建
  • 记录:Unity脚本的编写7.0
  • 界面控件DevExpress WPF流程图组件,完美复制Visio UI!(二)
  • 创建一个带有背景图层和前景图层的渲染窗口
  • 软信天成:速看!云端混合数据管理的最佳解决方案