使用XLSX库写入Excel文件时如何保留原数据字段顺序
问题原因
XLSX.utils.json_to_sheet 默认会对传入对象的键执行自动排序:当键为可解析为整数的字符串时,会优先按数字值大小排序,因此示例中的"10"、"11"会排在"00"、"01"前,和对象定义的字段顺序不一致。
修复方法
调用json_to_sheet时传入第二个配置项,通过header字段显式指定列顺序,即可跳过默认排序逻辑,按预期顺序生成表格列。
修正后的完整代码:
const handleClick = () => { const wb = XLSX.utils.book_new(); // 显式指定列顺序 const ws = XLSX.utils.json_to_sheet(arrayofobjects, { header: ["00", "01", "10", "11"] }); XLSX.utils.book_append_sheet(wb, ws, 'Test'); XLSX.writeFile(wb, 'file.xlsx'); }; const arrayofobjects = [ { "00": 4, "01": 6, "10": 12, "11": 7, }, { "00": 7, "01": 7, "10": 4, "11": 5, } ]
若对象字段为动态生成,无需硬编码header数组,可提前取首个对象的键生成顺序数组:
const header = Object.keys(arrayofobjects[0]),将该数组传入header配置即可,会严格遵循对象原有键的排列顺序。
内容的提问来源于stack exchange,提问作者venkata sai injarapu
相关产品推荐
相关产品推荐

