转换成
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>excel to json</title>
<script src="https://cdn.bootcdn.net/ajax/libs/xlsx/0.18.5/xlsx.core.min.js"></script>
</head>
<body>
<input type="file" onchange="toJSON(this)">
<br>
<button onclick="downjsonclick(this)">导出</button>
<script>
let data = []
function toJSON(obj) {
if (!obj.files) {
return;
}
const file = obj.files[0];
const reader = new FileReader();
reader.onload = function (e) {
const excel = XLSX.read(e.target.result, {
type: 'binary'
});
const json = excel.SheetNames.map(item => {
return XLSX.utils.sheet_to_json(excel.Sheets[item])
})
data = json[0]
};
reader.readAsBinaryString(file);
}
function download(url, name) {
const a = document.createElement('a')
a.download = name
a.rel = 'noopener'
a.href = url
// 触发模拟点击
a.dispatchEvent(new MouseEvent('click'))
// 或者 a.click()
}
function downjsonclick() {
let xlsObj = data.reduce((acc, item) => {
acc[item.key] = {
en: item.en,
ch: item.ch
};
return acc;
}, {});
const str = JSON.stringify(xlsObj, null, 2)
// 方案一:Text -> DataURL
const dataUrl = `data:,${str}`
download(dataUrl, 'demo_'+ new Date().toLocaleString() +'.json')
// 方案二:Text -> Blob -> ObjectURL
// const url = URL.createObjectURL(new Blob(str.split('')))
// download(url, 'demo1.json')
}
</script>
</html>