我正在尝试将 Excel 工作表转换为 JavaScript 中的 json 对象,但在检索最终数据时遇到问题,因为它的范围仅限于本地。我想将标记为“inputData”的变量导出到另一个 JS 文件,但是为了做到这一点,它必须位于文件的顶层,我认为这意味着它必须是全局范围的。不过,我一生都无法弄清楚如何从其本地范围中获取它。任何帮助将不胜感激。
看一下代码:
let selectedFile;
document.getElementById('input').addEventListener('change', (event) => {
selectedFile = event.target.files[0];
})
document.getElementById('button').addEventListener('click', () => {
if (selectedFile) {
let fileReader = new FileReader();
fileReader.readAsBinaryString(selectedFile);
fileReader.onload = (event) => {
let data = event.target.result;
let workbook = XLSX.read(data, { type: "binary" })
let rowObject = XLSX.utils.sheet_to_row_object_array(workbook.Sheets.Grid);
let newData = rowObject.filter((item, index) => {
return index === rowObject.findIndex((obj) => {
return JSON.stringify(item) === JSON.stringify(obj)
})
})
newData.pop()
let inputData = JSON.stringify(newData, undefined, 4)
console.log(inputData)
}
}
})
您可以导出可变对象作为引用:
export const selectedFile = { value: undefined };
document.getElementById('input').addEventListener('change', (event) => {
selectedFile.value = event.target.files[0];
})
document.getElementById('button').addEventListener('click', () => {
if (selectedFile.value) {
let fileReader = new FileReader();
fileReader.readAsBinaryString(selectedFile.value);
fileReader.onload = (event) => {
let data = event.target.result;
let workbook = XLSX.read(data, { type: "binary" })
let rowObject = XLSX.utils.sheet_to_row_object_array(workbook.Sheets.Grid);
let newData = rowObject.filter((item, index) => {
return index === rowObject.findIndex((obj) => {
return JSON.stringify(item) === JSON.stringify(obj)
})
})
newData.pop()
inputData = JSON.stringify(newData, undefined, 4)
console.log(inputData)
}
}
});