在JavaScript中,可以使用第三方库来读取和导出Excel文件。一个常用的库是xlsx
,它可以处理多种格式的电子表格文件。
以下是使用xlsx
库的示例代码:
安装xlsx
库:
npm install xlsx
读取Excel文件内容:
const XLSX = require('xlsx');
// 读取Excel文件
const readExcel = (file) => {
const reader = new FileReader();
reader.onload = (e) => {
const data = new Uint8Array(e.target.result);
const workbook = XLSX.read(data, { type: 'array' });
const firstSheetName = workbook.SheetNames[0];
const worksheet = workbook.Sheets[firstSheetName];
const json = XLSX.utils.sheet_to_json(worksheet);
console.log(json);
};
reader.readAsArrayBuffer(file);
};
// 假设你有一个input元素来上传文件
const input = document.getElementById('input-excel');
input.addEventListener('change', (e) => {
const file = e.target.files[0];
readExcel(file);
});
导出JSON数据到Excel文件:
const writeExcel = (data, fileName) => {
const worksheet = XLSX.utils.json_to_sheet(data);
const workbook = XLSX.utils.book_new();
XLSX.utils.book_append_sheet(workbook, worksheet, 'Sheet1');
const wbout = XLSX.write(workbook, { bookType: 'xlsx', type: 'binary' });
function s2ab(s) {
const buf = new ArrayBuffer(s.length);
const view = new Uint8Array(buf);
for (let i = 0; i !== s.length; ++i) view[i] = s.charCodeAt(i) & 0xFF;
return buf;
}
saveAs(new Blob([s2ab(wbout)], { type: 'application/octet-stream' }), fileName + '.xlsx');
};
// 示例数据
const jsonData = [
{ name: 'Alice', email: 'alice@example.com' },
{ name: 'Bob', email: 'bob@example.com' }
];
// 导出数据到Excel文件
writeExcel(jsonData, 'data');
在上面的代码中,readExcel
函数用于读取用户通过<input>
元素上传的Excel文件,并将其内容转换为JSON。writeExcel
函数则将JSON数据导出为Excel文件,你可以通过修改jsonData
变量来导出不同的数据。
注意:saveAs
函数来自于file-saver
库,需要单独安装:
npm install file-saver
这些代码示例假设你正在使用一个HTML页面,并且已经有相应的<input>
元素来上传文件。如果你在浏览器环境中运行这些代码,请确保服务是通过HTTPS提供的,因为现代浏览器限制了从非HTTPS来源读取文件。