使用JS实现纯前端Excel的导入导出

您所在的位置:网站首页 revit如何导入pdf 使用JS实现纯前端Excel的导入导出

使用JS实现纯前端Excel的导入导出

2023-03-03 16:20| 来源: 网络整理| 查看: 265

前言

使用js-xlsx库实现前端对Excel表的导入,修改和导出

引入

NPM

npm i xlsx --save-dev import xlsx from xlsx 复制代码

包直接引入

复制代码

下载地址 github.com/SheetJS/js-…

话不多说,直接上代码开撸

html

// 导入Excel // 渲染生成表格 复制代码

js

// 获取上传的Excel文件 document.querySelector('#excel').onchange = (e) => { // 获取excel文档 const file = e.target.files[0] readWorkbookFromLocalFile(file, (e) => { readWorkbook(e); }) } 复制代码 function readWorkbookFromLocalFile(file, callback) { // 使用FileReader对象存储xslx文档 var reader = new FileReader(); reader.onload = function(e) { var data = e.target.result; // type一定要使用binary var workbook = XLSX.read(data, {type: 'binary'}); if(callback) callback(workbook); }; reader.readAsBinaryString(file); } 复制代码

转成cvs 要注意Execel表格内容不能包含英文的逗号不然解析出来的数据格式会有问题,因为到时候是使用逗号进行字符串切割,分割成同行的多个单元格

function readWorkbook(workbook) { let tableList = [] const sheetNames = workbook.SheetNames; sheetNames.map((sheetName, index) => { // 生成cvs 文档 const csv = XLSX.utils.sheet_to_csv(workbook.Sheets[sheetName]) 将文档切割成每一行数据,并且过滤空行 const csvList = csv.split('\n').filter(v => v !== ',,,,') tableList.push(csvList) }) let newExcel = ''; let table = ``; // 示例使用第一张表里头的内容进行分析 tableList[0].map((v,i) => { let tr = ``; let td = ``; const vArr = v.split(',') vArr.map(v => { td += `${v}` }) tr = `${td}`; table += tr; 这里可以进行对文档的处理并保存成新的文档,便于后面导出新文档 newExcel += `${v}\n` }) // 渲染生成表格 table = ` ${table} ` document.querySelector('.table').innerHTML = table downloadExcel(newExcel) } 复制代码

导出文档

function downloadExcel(newExcel) { const url = 'data:text/csv;,\ufeff' + encodeURIComponent(newExcel); const link = document.createElement("a"); link.href = url; // 文件名 link.download = "数据表.xls"; link.click(); } 复制代码


【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3