想问一下如何实现几千张excel表的前端展示与数据修改?
这几千张表内容不同格式不同,以及还要插入图片。
服务端解决,web端对于文件处理的能力有限
1、数据存储:需要将这几千张表的数据存储到数据库中,可以采用关系型数据库或者NoSQL数据库,具体选择哪一种可以根据实际情况进行选择。
2、数据展示:需要使用前端框架(如React、Vue、Angular等)来展示这些Excel表的数据,可以使用表格组件来展示数据。对于不同格式不同的表格,可以针对每种格式写不同的表格组件来展示。
3、数据修改:需要提供编辑功能,可以使用表格组件的编辑功能来实现。对于插入图片,可以使用HTML5的File API来实现上传图片功能,同时在数据库中存储图片的URL,然后在表格中展示图片。
4、性能优化:展示几千张Excel表的数据会涉及到大量的数据处理和渲染,需要进行性能优化。可以使用虚拟滚动来优化表格的渲染,即只渲染可见区域的数据,同时需要对数据进行分页。
实现几千张Excel表的前端展示与数据修改需要涉及到多个方面,需要进行系统设计和开发。建议先进行需求分析和系统设计,然后再进行具体的开发和实现。
用到xlsx组件
安装xlsx
npm i xlsx
引入xlsx
import XLSX from 'xlsx';
方法
submitFile(event){
if (!event.currentTarget.files.length) {
return
}
const that = this
// 拿取文件对象
var f = event.currentTarget.files[0]
// 用FileReader来读取
var reader = new FileReader()
// 重写FileReader上的readAsBinaryString方法
FileReader.prototype.readAsBinaryString = function (f) {
var binary = ''
var reader = new FileReader()
reader.onload = function (e) {
// 读取成Uint8Array,再转换为Unicode编码(Unicode占两个字节)
var bytes = new Uint8Array(reader.result)
var length = bytes.byteLength
for (var i = 0; i < length; i++) {
binary += String.fromCharCode(bytes[i])
}
// 接下来就是xlsx了,具体可看api
that.wb = XLSX.read(binary, {
type: 'binary'
})//解析表格内容
console.log(that.wb);
that.onChangeSheet();
}
reader.readAsArrayBuffer(f)
}
reader.readAsBinaryString(f)
},
onChangeSheet(val){
const that = this;
if(val>=0) that.sheet = val;//that.sheet 选择第几个sheet表,从0开始
that.excelData = XLSX.utils.sheet_to_json(that.wb.Sheets[that.wb.SheetNames[that.sheet]]);//取指定sheet表中的数据
that.columns = Object.keys(that.excelData[0]).map(ele=>({
key: ele,
title: ele,
dataIndex: ele,
width: 120
}));
}