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

使用Qxlsx导出Excel时,如何在同一单元格写入多组数据?

Qxlsx合并日/月/年数据到同一Excel单元格的解决方案

要将分离的日、月、年数据合并写入同一单元格,无需在遍历列的j循环里逐一处理,直接在每一行的循环中提取三组数据,合并成字符串后写入目标单元格即可。

修改后的代码示例

for (int i = 0; i < maxRowCount; ++i) // 遍历每一行数据
{
    Format format;
    format.setNumberFormatIndex(2); // 设置数字格式

    // 写入温度数据到第k行第3列
    if (i < dataColums[0].count()) {
        xlsx.write(k, 3, dataColums[0][i], format); 
    }

    // 写入湿度数据到第k行第4列
    if (i < dataColums[1].count()) {
        xlsx.write(k, 4, dataColums[1][i], format); 
    }

    // 合并日、月、年并写入同一单元格
    if (i < dataColums[2].count() && i < dataColums[3].count() && i < dataColums[4].count()) {
        // 提取日、月、年数据(索引对应:j=2=日,j=3=月,j=4=年)
        QString day = dataColums[2][i].toString();
        QString month = dataColums[3][i].toString();
        QString year = dataColums[4][i].toString();

        // 自定义日期格式,比如 "YYYY-MM-DD" 或 "DD/MM/YYYY",按需调整
        QString combinedDate = QString("%1-%2-%3").arg(year).arg(month).arg(day);

        // 写入到目标单元格,示例为第k行第5列,可根据需求修改列号
        xlsx.write(k, 5, combinedDate);
    }

    k++; // 行号自增
}

关键说明

  1. 跨列数据提取:直接通过dataColums[2][i]、dataColums[3][i]、dataColums[4][i]获取当前行的日、月、年数据,无需依赖j循环的遍历逻辑。
  2. 日期格式自定义:使用QString::arg()拼接成你需要的日期格式,比如"DD/MM/YYYY"或者"年-月-日",完全根据业务需求调整。
  3. 越界判断:添加条件确保当前行i同时在日、月、年三列的有效数据范围内,避免访问不存在的索引导致错误。

如果要保留原有的j循环逻辑,也可以在j==2的分支里直接提取另外两组数据:

else if(j==2) 
{
    if (i < dataColums[3].count() && i < dataColums[4].count()) {
        QString day = dataColums[2][i].toString();
        QString month = dataColums[3][i].toString();
        QString year = dataColums[4][i].toString();
        QString dateStr = QString("%1/%2/%3").arg(day).arg(month).arg(year);
        xlsx.write(k, 5, dateStr); // 写入目标单元格
    }
}

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.22 05:54:09