Skip to content

SheetJS

why

在前端 Excel 表格文件处理领域,SheetJS 提供的 xlsx 库算是非常突出的存在,被很多大厂中生产级环境使用。

本文总结其 xlsx 库的常用语法清单,以及 Excel 文件处理过程中会遇到的一些问题。

how

结合官网和 DeepSeek 的教程,在前端项目中尝试(xlsx 也可中 Node.js 环境中运行)。

what

○ 基础使用,将对象数组导出为表格

ts
// 表头,且对应顺序
const header = ['city', 'name', 'age'];
const headerMap = { city: '城市', name: '姓名', age: '年龄' };
const chineseHeader = header.map((k) => headerMap[k]);

// 表格体数据
const rows = [
    { name: '张三', age: 30, city: '北京' },
    { name: '李四', age: 25, city: '上海' },
];

// 在表中写入表头和数据,更新表头为映射值
const worksheet = XLSX.utils.json_to_sheet(rows, { header: header });
XLSX.utils.sheet_add_aoa(worksheet, [chineseHeader], { origin: 'A1' });

// 工作簿
const workbook = XLSX.utils.book_new();

// 在工作簿中添加表,导出
XLSX.utils.book_append_sheet(workbook, worksheet, 'Sheet1');
XLSX.writeFile(workbook, 'output.xlsx');

○ 基础使用,将二维数组导出为表格

ts
// 创建表
const baseData = [
    ['姓名', '年龄', '个人网站'],
    ['张三', 28, 'https://zhangsan.com'],
    ['李四', 32, 'https://lisi.com'],
];
const worksheet = XLSX.utils.aoa_to_sheet(baseData);

// 创建工作簿 -> 添加表 -> 导出

○ 单元格自定义

ts
// 提前准备 worksheet

// 改为超链接
if (worksheet('B2')) {
    worksheet['B2'].l = {
        Target: 'https://example.com',
        Tooltip: '访问 example 网站',
    };
}

// 添加百分数值到新单元格
if (!worksheet('C2')) {
    worksheet['C2'] = {
        v: 0.9856,
        t: 'n', // 数值类型
        z: '0.00%', // 数值格式
    };
}

参考

访问量 PV:Blocked用户数 UV:Blocked