当前位置: 首页 > news >正文

xlsx.utils.json_to_sheet函数详解

xlsx.utils.json_to_sheetxlsx 库中的一个实用函数,用于将 JSON 数据转换为 Excel 工作表对象。这个函数非常有用,尤其是在你需要从数据库或其他数据源获取数据并将其导出到 Excel 文件时。

函数签名

XLSX.utils.json_to_sheet(data, opts)
  • data:一个包含对象的数组,每个对象代表一行数据。
  • opts:可选参数对象,用于配置生成的工作表的行为。

参数详解

  • data:这是一个数组,其中每个元素都是一个对象。对象的键名将作为列标题,值将作为单元格内容。例如:

    const data = [
        { name: 'John', age: 30, city: 'New York' },
        { name: 'Anna', age: 25, city: 'London' },
        { name: 'Mike', age: 32, city: 'San Francisco' }
    ];
    
  • opts:这是一个可选的对象,可以包含以下属性:

    • header:指定工作表的第一行(列标题)。默认情况下,它会使用对象的键名作为列标题。你可以通过传递一个数组来自定义列标题顺序或名称。
    • skipHeader:如果设置为 true,则不会在生成的工作表中包含列标题行。默认是 false
    • cellDates:如果设置为 true,则日期类型的数据会被处理为 Excel 的日期格式。默认是 false
    • dateNF:自定义日期格式字符串。
    • nullError:如果设置为 true,则空值会被处理为错误单元格。默认是 false

示例代码

下面是一个完整的示例,展示如何使用 json_to_sheet 将 JSON 数据转换为 Excel 工作表,并将其保存为 Excel 文件。

1. 安装依赖

确保你已经安装了 xlsx 库:

npm install xlsx
2. 编写脚本

创建一个名为 excel_writer.js 的文件,并添加以下代码:

const XLSX = require('xlsx');

// 示例数据
const data = [
    { name: 'John', age: 30, city: 'New York' },
    { name: 'Anna', age: 25, city: 'London' },
    { name: 'Mike', age: 32, city: 'San Francisco' }
];

// 将JSON数据转换为Excel工作表
function jsonToExcel(data, filePath) {
    // 创建一个新的工作簿
    const workbook = XLSX.utils.book_new();

    // 将数据转换为工作表
    const worksheet = XLSX.utils.json_to_sheet(data);

    // 将工作表添加到工作簿
    XLSX.utils.book_append_sheet(workbook, worksheet, 'Sheet1');

    // 将工作簿保存为Excel文件
    XLSX.writeFile(workbook, filePath);

    console.log(`Data has been written to ${filePath}`);
}

// 调用函数并传入数据和输出路径
jsonToExcel(data, './output.xlsx');
3. 运行脚本

在终端中运行以下命令来执行脚本:

node excel_writer.js

运行后,你会在项目目录下找到一个名为 output.xlsx 的 Excel 文件,里面包含了你的 JSON 数据。

自定义列标题

有时你可能希望自定义列标题,而不是直接使用对象的键名。你可以通过 header 选项来实现这一点。

const XLSX = require('xlsx');

// 示例数据
const data = [
    { name: 'John', age: 30, city: 'New York' },
    { name: 'Anna', age: 25, city: 'London' },
    { name: 'Mike', age: 32, city: 'San Francisco' }
];

// 将JSON数据转换为Excel工作表,并自定义列标题
function jsonToExcelWithCustomHeaders(data, filePath) {
    // 创建一个新的工作簿
    const workbook = XLSX.utils.book_new();

    // 自定义列标题
    const customHeaders = ['Full Name', 'Age', 'Location'];

    // 将数据转换为工作表,并指定自定义列标题
    const worksheet = XLSX.utils.json_to_sheet(data, { header: ['name', 'age', 'city'] });

    // 手动修改第一行(列标题)
    for (let i = 0; i < customHeaders.length; i++) {
        const cellAddress = XLSX.utils.encode_cell({ c: i, r: 0 });
        worksheet[cellAddress].v = customHeaders[i];
    }

    // 将工作表添加到工作簿
    XLSX.utils.book_append_sheet(workbook, worksheet, 'Sheet1');

    // 将工作簿保存为Excel文件
    XLSX.writeFile(workbook, filePath);

    console.log(`Data has been written to ${filePath}`);
}

// 调用函数并传入数据和输出路径
jsonToExcelWithCustomHeaders(data, './output_custom_headers.xlsx');

跳过列标题

如果你不想在生成的 Excel 文件中包含列标题,可以通过设置 skipHeader 选项来跳过它们。

const XLSX = require('xlsx');

// 示例数据
const data = [
    { name: 'John', age: 30, city: 'New York' },
    { name: 'Anna', age: 25, city: 'London' },
    { name: 'Mike', age: 32, city: 'San Francisco' }
];

// 将JSON数据转换为Excel工作表,并跳过列标题
function jsonToExcelSkipHeaders(data, filePath) {
    // 创建一个新的工作簿
    const workbook = XLSX.utils.book_new();

    // 将数据转换为工作表,并跳过列标题
    const worksheet = XLSX.utils.json_to_sheet(data, { skipHeader: true });

    // 将工作表添加到工作簿
    XLSX.utils.book_append_sheet(workbook, worksheet, 'Sheet1');

    // 将工作簿保存为Excel文件
    XLSX.writeFile(workbook, filePath);

    console.log(`Data has been written to ${filePath}`);
}

// 调用函数并传入数据和输出路径
jsonToExcelSkipHeaders(data, './output_skip_headers.xlsx');

处理日期类型数据

如果你的数据中包含日期类型字段,可以通过设置 cellDates 选项来正确处理这些字段。

const XLSX = require('xlsx');

// 示例数据,包含日期类型字段
const data = [
    { name: 'John', dob: new Date('1991-03-17'), city: 'New York' },
    { name: 'Anna', dob: new Date('1996-08-15'), city: 'London' },
    { name: 'Mike', dob: new Date('1990-05-20'), city: 'San Francisco' }
];

// 将JSON数据转换为Excel工作表,并正确处理日期类型
function jsonToExcelWithDate(data, filePath) {
    // 创建一个新的工作簿
    const workbook = XLSX.utils.book_new();

    // 将数据转换为工作表,并正确处理日期类型
    const worksheet = XLSX.utils.json_to_sheet(data, { cellDates: true });

    // 将工作表添加到工作簿
    XLSX.utils.book_append_sheet(workbook, worksheet, 'Sheet1');

    // 将工作簿保存为Excel文件
    XLSX.writeFile(workbook, filePath);

    console.log(`Data has been written to ${filePath}`);
}

// 调用函数并传入数据和输出路径
jsonToExcelWithDate(data, './output_with_dates.xlsx');

总结

通过 xlsx.utils.json_to_sheet 函数,我们可以轻松地将 JSON 数据转换为 Excel 工作表,并进一步将其保存为 Excel 文件。这个函数提供了丰富的配置选项,使得我们可以根据实际需求灵活调整生成的工作表。

希望这篇文章能帮助你更好地理解和使用 xlsx 库中的 json_to_sheet 函数。如果你有任何问题或需要进一步的帮助,请随时提问!

相关文章:

  • web第六次
  • 在 STM32F7 系列微控制器中,使用定时器(如 TIM10)实现 10ms 中断,并在中断服务函数中调用 ProRelay() 函数
  • 配置集群-日志聚集操作
  • Flutter IconButton完全指南:高效使用与性能优化秘籍
  • 只是“更轻更薄”?不!遨游三防平板还选择“更强更韧”
  • 如何基于Gone编写一个Goner对接Apollo配置中心(下)—— 对组件进行单元测试
  • NPN三极管基极接稳压管的作用
  • 基于微信小程序的充电桩管理系统
  • PHP序列化漏洞
  • Typora1.9.5 破解
  • 项目问答(自用记录)
  • 领码科技:在低代码技术浪潮中的分享与探索
  • AI助力临床诊疗:AI工具帮助确认病情
  • 前端 FormData 详解
  • 搭建自己的OCR服务
  • 【微信小程序变通实现DeepSeek支持语音】
  • 路由器安全研究:D-Link DIR-823G v1.02 B05 复现与利用思路
  • 【嵌入式Linux】基于ArmLinux的智能垃圾分类系统项目
  • numpy学习笔记11:计算两个数组的欧氏距离
  • 【Python办公】提取Excel嵌入图片流程(代码前期步骤)
  • 解放军仪仗司礼大队参加越南纪念南方解放50周年庆典活动
  • 四川省人大常委会原党组成员、副主任宋朝华接受审查调查
  • 科克托是说真话的骗子,而毕加索是一言不发、让大家去猜的人
  • 《2025职场人阅读报告》:超半数会因AI改变阅读方向
  • 电厂 | 京东、美团为什么抢着为你送外卖?
  • 马上评丨老师要求犯错学生当众道歉,不该成被告