在前端使用XLSX处理Excel (antd环境)

简介:

前端处理excel我们要用到XLSX这个组件,它的github地址是https://github.com/SheetJS/js-xlsx
使用前可以通过npm安装:

 npm install xlsx

其他安装方式请参考github主页。
安装后在页面引入

import XLSX from 'xlsx';

antd的文件上传组件是Upload,把他引入

import {Button, Upload, Tooltip } from 'antd';

假设我们通过一个按钮把excel文件导入:

                    <Upload {...uploadprops}>
                        <Tooltip title='导入excel文件'>
                            <Button  type="primary" >
                                <Icon type="upload" /> 导入
                            </Button>
                        </Tooltip>
                    </Upload>

Upload的参数列表uploadprops我们要定义一下:

const uploadprops = {
    // 这里我们只接受excel2007以后版本的文件,accept就是指定文件选择框的文件类型
    accept: 'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet',
    name: 'file',
    headers: {
        authorization: 'authorization-text',
    },
    showUploadList: false,
    // 把excel的处理放在beforeUpload事件,否则要把文件上传到通过action指定的地址去后台处理
    // 这里我们没有指定action地址,因为没有传到后台
    beforeUpload: (file, fileList) => {
        var rABS = true;
        const f = fileList[0];
        var reader = new FileReader();
        reader.onload = function (e) {
            var data = e.target.result;
            if (!rABS) data = new Uint8Array(data);
            var workbook = XLSX.read(data, {
                type: rABS ? 'binary' : 'array'
            });
            // 假设我们的数据在第一个标签
            var first_worksheet = workbook.Sheets[workbook.SheetNames[0]];
            // XLSX自带了一个工具把导入的数据转成json
            var jsonArr = XLSX.utils.sheet_to_json(first_worksheet, {header:1});
            // 通过自定义的方法处理Json,比如加入state来展示
            handleImpotedJson(jsonArr.slice(1));
        };
        if (rABS) reader.readAsBinaryString(f); else reader.readAsArrayBuffer(f);
        return false;
    }
};

这样,当通过浏览器的文件选择框选择了文件后,就会进入beforeUpload事件开始执行我们的代码。

有一个问题是:有时候XLSX不能确定最后一条记录,已经扫描完了还要继续走。所以扫描出来的数组末尾有空元素,需要过滤掉

我估计是excel可以设置数据边界,因为java使用后台工具POI处理也有这问题,希望有大神能指导一下

目录
相关文章
|
8天前
|
前端开发 UED
前端解析Excel文件
前端解析Excel文件
42 0
|
8天前
|
存储 Python
用python将csv转excel (.xls和.xlsx)的几种方式
用python将csv转excel (.xls和.xlsx)的几种方式
146 4
|
8天前
|
Java 关系型数据库 MySQL
【MySQL × SpringBoot 突发奇想】全面实现流程 · xlsx文件,Excel表格导入数据库的接口(下)
【MySQL × SpringBoot 突发奇想】全面实现流程 · xlsx文件,Excel表格导入数据库的接口
47 0
|
8天前
|
Java 关系型数据库 MySQL
【MySQL × SpringBoot 突发奇想】全面实现流程 · xlsx文件,Excel表格导入数据库的接口(上)
【MySQL × SpringBoot 突发奇想】全面实现流程 · xlsx文件,Excel表格导入数据库的接口
51 0
|
8天前
|
前端开发 JavaScript IDE
构建高效的前端开发环境
本文探讨了如何构建一个高效的前端开发环境,包括选择合适的开发工具、优化工作流程和提高代码质量的方法。通过本文的指导,读者可以更好地提升前端开发效率,快速构建出高质量的网站和应用程序。
|
5天前
|
JSON Rust 前端开发
【sheetjs】纯前端如何实现Excel导出下载和上传解析?
本文介绍了如何使用`sheetjs`的`xlsx`库在前端实现Excel的导出和上传。项目依赖包括Vite、React、SheetJS和Arco-Design。对于导出,从后端获取JSON数据,通过`json_to_sheet`、`book_new`和`writeFile`函数生成并下载Excel文件。对于上传,使用`read`函数将上传的Excel文件解析为JSON并发送至后端。完整代码示例可在GitHub仓库[fullee/sheetjs-demo](https://github.com/fullee/sheetjs-demo)中查看。
38 10
|
8天前
|
前端开发 IDE 开发工具
csdn新星计划vue3+ts+antd赛道——利用inscode搭建vue3(ts)+antd前端模板
csdn新星计划vue3+ts+antd赛道——利用inscode搭建vue3(ts)+antd前端模板
13 0
|
8天前
|
Web App开发 前端开发 安全
如何用JAVA如何实现Word、Excel、PPT在线前端预览编辑?
随着信息化的发展,在线办公也日益成为了企业办公和个人学习不可或缺的一部分,作为微软Office的三大组成部分:Word、Excel和PPT也广泛应用于各种在线办公场景,但是由于浏览器限制及微软Office的不开源等特性,导致Word、Excel和PPT在在线办公很难整合到自己公司的OA或者文档系统。
381 2
|
8天前
|
Web App开发 JavaScript 前端开发
2024年纯前端VUE在线编辑微软Office/金山WPS的Word/Excel文档
现在,随着数字化进程渗透到到各行各业,数据安全已经成为了数字化革命中的重要组成部分,而在线Office成在OA、ERP、文档系统中得到了广泛的应用,为我国的信息化事业也做出了巨大贡献。随着操作系统、浏览器及Office软件的不断升级和更新换代,加上国家对信息化、数字化系统要求的不断提升,一些厂家的WebOffice控件产品不断被淘汰出局,而现存的几个产品也存在以下几个问题:
458 1
2024年纯前端VUE在线编辑微软Office/金山WPS的Word/Excel文档
|
8天前
|
前端开发 JavaScript 测试技术
构建现代化前端开发环境的关键要素
【2月更文挑战第8天】 在当今快速发展的数字化时代,前端开发成为了互联网行业中不可或缺的重要组成部分。构建一个现代化的前端开发环境是提高开发效率和用户体验的关键所在。本文将介绍几个关键要素,包括响应式设计、前端框架选择、自动化构建工具以及代码质量保障,帮助开发者打造高效、稳定、可维护的前端开发环境。