xlsx
:用于处理Excel文件。xlsx-style
:用于添加样式到Excel文件中。file-saver
:用于将生成的Excel文件保存到用户的计算机上
npm install xlsx xlsx-style file-saver
// 导入所需库
const XLSX = require('xlsx');
const XLSXStyle = require('xlsx-style');
const FileSaver = require('file-saver');
// 示例JSON数据
const jsonData = [
{ name: 'Alice', age: 25 },
{ name: 'Bob', age: 30 },
{ name: 'Charlie', age: 28 }
];
// 创建一个工作簿
const wb = XLSX.utils.book_new();
const wsName = 'Sheet1';
// 将JSON数据转换为工作表
const ws = XLSX.utils.json_to_sheet(jsonData, { header: ['name', 'age'] });
// 设置标题字体样式
const titleCellStyle = { font: { bold: true } };
ws[XLSX.utils.encode_cell({ r: 0, c: 0 })].s = titleCellStyle;
// 将工作表添加到工作簿
XLSX.utils.book_append_sheet(wb, ws, wsName);
// 将工作簿转换为二进制数据
const wbout = XLSXStyle.write(wb, { bookType: 'xlsx', bookSST: false, type: 'binary' });
// 将二进制数据保存为Excel文件
const blob = new Blob([s2ab(wbout)], { type: 'application/octet-stream' });
FileSaver.saveAs(blob, 'data.xlsx');
// 辅助函数:将字符串转换为ArrayBuffer
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;
}