You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何用jQuery和Ajax下载.xlsx文件?含CSV转XLSX及单元格处理需求

解决方案:将CSV下载改为XLSX并保留JSON完整内容

核心思路

使用**SheetJS(xlsx)**库实现XLSX文件生成,该库能自动处理含特殊字符(如逗号)的内容,确保JSON数据完整存入单个单元格,同时支持多工作表结构,比原CSV的空行分隔更规范。

步骤实现

1. 引入SheetJS库

将SheetJS库文件下载到本地后引入项目:

<script src="path/to/xlsx.full.min.js"></script>

2. 修改原有代码逻辑

替换原CSV生成及下载部分,改用SheetJS构建XLSX文件:

if(response.result.tripDetails.length != 0 || response.result.requestedData.length != 0) {
    // 表头及数据初始化
    let rows1 = [
        ["Trip ID", "Trip", "Country", "Add Date Time GMT", "Add Date Time Local", "Remove Date Time GMT", "Remove Date Time Local","Create Date"]
    ];
    let rows2 = [
        ["Request", "Local Time", "GMT Time", "Created Date"]
    ];

    // 处理行程数据
    response.result.tripDetails.forEach(function (locationTrackingTripData) {
        let row = [
            locationTrackingTripData.tripId, 
            locationTrackingTripData.trip, 
            locationTrackingTripData.country, 
            locationTrackingTripData.addDateTimeGMT, 
            locationTrackingTripData.addDateTimeLocal, 
            locationTrackingTripData.removeDateTimeGMT, 
            locationTrackingTripData.removeDateTimeLocal, 
            locationTrackingTripData.createdDate
        ];
        rows1.push(row);
    });

    // 处理请求数据:将JSON转为字符串,确保完整存入单元格
    response.result.requestedData.forEach(function (locationTrackingRequestedData) {
        let row = [
            JSON.stringify(locationTrackingRequestedData.request), // 转成JSON字符串避免拆分
            locationTrackingRequestedData.localTime, 
            locationTrackingRequestedData.GMTTime, 
            locationTrackingRequestedData.createdDate
        ];
        rows2.push(row);
    });

    // 构建XLSX工作簿
    const wb = XLSX.utils.book_new();
    // 创建第一个工作表(行程详情)
    const ws1 = XLSX.utils.aoa_to_sheet(rows1);
    XLSX.utils.book_append_sheet(wb, ws1, "Trip Details");
    // 创建第二个工作表(请求数据)
    const ws2 = XLSX.utils.aoa_to_sheet(rows2);
    XLSX.utils.book_append_sheet(wb, ws2, "Requested Data");

    // 触发XLSX文件下载
    XLSX.writeFile(wb, "locationTrackingDetails.xlsx");
}

关键说明

  • JSON内容处理:通过JSON.stringify()将JSON对象转为字符串,SheetJS会将该字符串完整写入单个单元格,不会因逗号拆分内容。
  • 多工作表设计:原CSV中用空行分隔的两组数据,改为两个独立工作表,更符合Excel的使用习惯,数据结构更清晰。
  • 可靠性提升:相比手动拼接CSV,SheetJS会自动处理单元格的特殊字符、换行等问题,避免出现格式错误。

内容的提问来源于stack exchange,提问作者Dulani Maheshi

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.17 07:45:20