利⽤sheet.js解析excel⽂件
今天⽤的是Sheet.js的in.js
官⽅⽂档地址:
主要功能
解析符合格式的数据
导出符合格式的数据
利⽤中间层操作数据
读取⽂件的⽅法
read_options
type:
base64: 以base64⽅式读取;
binary: BinaryString格式(byte n is data.charCodeAt(n))
string: UTF8编码的字符串;
buffer: nodejs Buffer;
array: Uint8Array,8位⽆符号数组;
file: ⽂件的路径(仅nodejs下⽀持);
worksheet转换数据格式
XLSX.utils.sheet_to_csv(worksheet):将表格数据转化为csv格式。
XLSX.utils.sheet_to_txt(worksheet):将表格数据转化为⽣成由utf16编码的txt格式。
XLSX.utils.sheet_to_html(worksheet):将表格转化为html⽂件。
XLSX.utils.sheet_to_json(worksheet): 将表格数据转化为json格式。
表格操作
XLSX.utils.aoa_to_sheet(Array[][]):将⼆维数组转化为worksheet对象。
XLSX.utils.json_to_sheet(Object):将js对象转化为worksheet对象。
XLSX.utils.table_to_sheet(HTML):将DOM节点转化为worksheet对象(⼀般为table元素、tr元素和th元素)。
XLSX.utils.sheet_add_aoa(worksheet, Array[][]):将⼆维数组中的数据添加到已有的worksheet中。
XLSX.utils.sheet_add_json(worksheet, Object):将js对象中的数据添加到已有的worksheet中。
XLSX.utils.book_append_sheet(workbook, worksheet, sheetname):将worksheet对象添加到workbook中, 并命名为sheetname。
写⼊数据,导出⽂件
SheetJS通过三种⽅法写⼊数据, 这两种⽅法均会对数字、字符串、null和undefined、⽇期等类型进⾏
⾃动解析:XLSX.write(workbook, write_options):
按照workbook中的数据转化为⽂件所需要的格式, 但不⽣成⽂件。
第⼀个参数:workbook对象, 第⼆个参数:设置对象(对⽣成⽂件格式的⼀些设置)
场景:需要通过异步请求来修改服务器上的⽂件
XLSX.writeFile(workbook, filename[, write_options]):
按照workbook对象⽣成⽂件。若在浏览器端, 会⾃动下载该⽂件。在Node端, 会⾃动⽣成该⽂件并保存到本地。
第⼀个参数:workbook对象, 第⼆个参数:⽣成⽂件的⽂件名,第三个参数:可选,设置对象(对⽣成⽂件格式的⼀些设置)
XLSX.writeFileAsync(filename, workbook, o, cb): 按照workbook对象⽣成⽂件。当o执⾏完毕后, 调⽤cb回调函数。
有关write_options的内容详见。
今天完成的任务是这样的
1.选择⽂件前端解析出excel⽂档内容(只针对第⼀⾏为表头的表格,多个表只取第⼀个表)
根据解析的数据和字段⼀⼀匹配,⽤于批量更新操作
js代码:
// 解析选择的表格
excelFn(file) {
js 二维数组const fileReader = new FileReader();
var that = this;
const data = sult;
// 读取整个⽂件数据
const workbook = ad(data, {
type: 'binary',
})
/
/ 取第⼀张表
const wsname = workbook.SheetNames[0]
// 获取到名为wsname的表
// let worksheet = workbook.Sheets[wsname]; var outArray = [], outTitArray = [];
// ⽣成json表格内容
const ws = XLSX.utils.sheet_to_json(workbook.Sheets[wsname])
// 输出表格对应位置是什么值
// const ws1 = XLSX.utils.sheet_to_slk(workbook.Sheets[wsname])
// ⽣成HTML输出
// const ws2 = XLSX.utils.sheet_to_html(workbook.Sheets[wsname])
// ⽣成分隔符分隔值输出
// const ws3 = XLSX.utils.sheet_to_csv(workbook.Sheets[wsname])
// ⽣成公式列表(具有值回退)
// const ws4 = XLSX.utils.sheet_to_formulae(workbook.Sheets[wsname]) // ⽣成UTF16格式的⽂本
// const ws5 = XLSX.utils.sheet_to_txt(workbook.Sheets[wsname])
//判断是否为空表
if (ws.length < 1) {
common.nameEroor($('#excelBtn'), '表格内容为空')
} else {
//获取处理过的数据
ws.forEach((item, index) => {
for (var itemName in item) {
var obj = {};
obj.name = itemName;
obj.value = item[itemName]
outArray.push(obj);
}
})
console.log(outArray)
that.matchView(outArray);
outExcel = outArray;
}
}
},
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论