JSON与excel之间的相互转化(Vue)
JSON与excel之间的相互转化(Vue)
这几天项目中有个需求,是对数据进行批量操作
上传时候需要把excel转为json发给后端,而在导出时需要将json转为excel文件
我是借用了xlsx
这个库来完成的,在此记录一下
先npm i xlsx
安装相关依赖
设置一个input用于
<input type="file"
name="fileUploader"
id="fileUploader"
accept=".xls,.xlsx"
@change="_toJSON"/>
引入对应的框架
import xlsx from 'xlsx'
excel转json
_toJson(){
let file = e.target.files[0]
let reader = new FileReader()
reader.onload = (event) => {
console.log(event);
let data = event.target.result;
const workbook = XLSX.read(data, {
type: 'binary'
});
let resultArray = []
workbook.SheetNames.forEach(function (sheetName) {
console.log('workbook.Sheets[sheetName]', workbook.Sheets[sheetName]);
const data = XLSX.utils.sheet_to_json(workbook.Sheets[sheetName], { header: 1 });
console.log('data', data);
let mainData = data.slice(1)
if (mainData.length > 0) {
for (let row = 0; row < mainData.length; row++) {
let rowData = {}
for (let col = 0; col < data[0].length; col++) {
rowData[data[0][col]] = mainData[row][col] || ''
}
resultArray.push(rowData)
}
} else {
alert('至少需要一行有效数据')
}
})
console.log('resultArray', resultArray);
}
reader.readAsBinaryString(file);
}
json转excel
_toExcel () {
let data = [{ "业务政策": 1, "产品名称": 2, "证件号码": 5 }, { "产品名称": 2 }]
const ws = XLSX.utils.json_to_sheet(data);
const wb = XLSX.utils.book_new();
XLSX.utils.book_append_sheet(wb, ws, "People");
XLSX.writeFile(wb, "sheetjs.xlsx");
}
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 无需6万激活码!GitHub神秘组织3小时极速复刻Manus,手把手教你使用OpenManus搭建本
· Manus爆火,是硬核还是营销?
· 终于写完轮子一部分:tcp代理 了,记录一下
· 别再用vector<bool>了!Google高级工程师:这可能是STL最大的设计失误
· 单元测试从入门到精通