QXlsx将数据保存到 .xlsx文件

以下是一个使用 QXlsx 将数据保存到 .xlsx 文件的完整示例代码,包含基础数据写入、格式设置和常见操作:


示例代码:写入数据到 Excel 文件

#include <QCoreApplication>
#include <QXlsx/xlsxdocument.h>
#include <QDebug>

int main() {
    // 创建一个 Excel 文档对象
    QXlsx::Document xlsx;

    // 写入基础数据(文本、数字、日期)
    xlsx.write("A1", "姓名");      // 使用单元格标识符(如"A1")
    xlsx.write("B1", "年龄");
    xlsx.write("C1", "入职日期");
    
    xlsx.write(2, 1, "张三");     // 使用行列号(行号, 列号): 行2,列1 = A2
    xlsx.write(2, 2, 28);
    xlsx.write(2, 3, QDate(2020, 5, 10));  // 日期自动转换为 Excel 格式
    
    xlsx.write(3, 1, "李四");
    xlsx.write(3, 2, 35);
    xlsx.write(3, 3, QDate(2018, 9, 1));

    // 设置标题行格式(加粗、居中、背景色)
    QXlsx::Format headerFormat;
    headerFormat.setFontBold(true);
    headerFormat.setHorizontalAlignment(QXlsx::Format::AlignHCenter);
    headerFormat.setPatternBackgroundColor(Qt::yellow);
    xlsx.write("A1:C1", headerFormat);  // 应用格式到区域

    // 合并单元格(合并 A5:C5 并写入数据)
    xlsx.mergeCells("A5:C5");
    xlsx.write("A5", "员工信息汇总表", headerFormat);

    // 添加公式(计算平均年龄)
    xlsx.write("A6", "平均年龄");
    xlsx.write("B6", "=AVERAGE(B2:B3)");  // Excel 公式

    // 插入图片(需图片路径正确)
    // xlsx.insertImage("D2", QImage("avatar.png"));

    // 保存文件到当前目录
    if (xlsx.saveAs("EmployeeData.xlsx")) {
        qDebug() << "Excel 文件保存成功!路径: " << QDir::current().filePath("EmployeeData.xlsx");
    } else {
        qDebug() << "保存失败!请检查路径或权限。";
    }

    return 0;
}

代码说明

  1. 写入数据

    • 支持直接通过单元格标识符(如 "A1")或行列号(如 行号, 列号)写入数据。
    • 自动处理数据类型(文本、数字、日期等)。
  2. 格式设置

    • 使用 QXlsx::Format 对象定义格式(加粗、对齐、背景色等)。
    • 通过 write 方法的第三个参数应用格式。
  3. 合并单元格

    • 使用 mergeCells() 合并指定区域的单元格。
  4. 公式支持

    • 直接写入 Excel 公式(如 =AVERAGE(B2:B3)),打开文件时会自动计算结果。
  5. 保存文件

    • saveAs() 方法指定文件名,返回 bool 表示是否成功。

输出结果

生成的 EmployeeData.xlsx 文件内容如下:

姓名年龄入职日期
张三282020-05-10
李四352018-09-01
员工信息汇总表(合并 A5-C5)
平均年龄=AVERAGE(B2:B3) → 31.5

常见问题处理

  1. 文件路径权限问题:确保程序对目标目录有写入权限。
  2. 日期显示异常:QXlsx 会自动转换 QDate/QDateTime 为 Excel 日期格式。
  3. 公式不生效:需用 Excel 软件打开文件查看计算结果,文本编辑器不会计算公式。

如果需要更多高级操作(如图表、条件格式等),可参考 QXlsx 官方文档

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值