QT操作Excel

本文所写的方法仅适用于windows平台,因为该方法需要ActiveX支持. linux下可使用libexcel,这里不作介绍.

首先需要在头文件中添加 QT += axcontainer

#include <QAxObject>

QAxObject excel("Excel.Application");//连接Excel控件
    excel.setProperty("Visible", false);// 不显示窗体
    excel.setProperty("DisplayAlerts", false); //不显示任何警告信息。如果为true, 那么关闭时会出现类似"文件已修改,是否保存"的提示

    QAxObject* workbooks = excel.querySubObject("WorkBooks"); // 获取工作簿集合
    if (!workbooks)
    {
        return false;
    }
    workbooks->dynamicCall("Add"); // 新建一个工作簿
    QAxObject* workbook = excel.querySubObject("ActiveWorkBook"); // 获取当前工作簿
    if (!workbook)
    {
        return false;
    }
/*QAxObject* workbook = workbooks->querySubObject("Open(const QString&)", (m_excelPath));
    if (!workbook)	//新建工作薄或者打开工作薄选择其中一种
    {
        return ;
    }*/
    QAxObject* worksheet = workbook->querySubObject("WorkSheets(int)", 1); // 获取工作表集合的工作表1, 即sheet1
    if (!worksheet)
    {
        return false;
    }

    QAxObject* cell = NULL;
    int rowCount = 1;
    QHashIterator<QString, QString> iter(languageHash);
    while(iter.hasNext())
    {
        iter.next();
        cell = worksheet->querySubObject("Cells(int, int)", rowCount, 1);
        if (cell)
        {
            cell->dynamicCall("SetValue(conts QVariant&)", iter.key()); // 设置单元格的值
            qDebug() << cell->dynamicCall("Value2()").toString(); //获取单元格的值
        }

        cell = worksheet->querySubObject("Cells(int, int)", rowCount, 2);
        if (cell)
        {
            cell->dynamicCall("SetValue(conts QVariant&)", iter.value()); // 设置单元格的值
        }
        rowCount++;
    }

    workbook->dynamicCall("SaveAs(const QString&)", QDir::toNativeSeparators(m_excelPath)); //保存到filepath // 注意一定要用QDir::toNativeSeparators, 将路径中的"/"转换为"\", 不然一定保存不了
    workbook->dynamicCall("Close (Boolean)", false);  //关闭文件
    excel.dynamicCall("Quit(void)");  //退出
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值