Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/qt/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何通过Qt设置excel列格式?_Excel_Qt - Fatal编程技术网

如何通过Qt设置excel列格式?

如何通过Qt设置excel列格式?,excel,qt,Excel,Qt,我想将一些电话号码写入excel文件,其中一些以0开头(如02167820096)。 我尝试将该列的NumberFormatLocal属性设置为字符串类型: QAxObject* col=worksheet->querySubObject("Columns(int)",1); if (!col) { qDebug()<<"col is NULL"; } qDebug()<

我想将一些电话号码写入excel文件,其中一些以0开头(如02167820096)。 我尝试将该列的NumberFormatLocal属性设置为字符串类型:

        QAxObject* col=worksheet->querySubObject("Columns(int)",1);
        if (!col)
        {
            qDebug()<<"col is NULL";
        }
        qDebug()<<"col 1 NumberFormatLocal:"<<col->property("NumberFormatLocal").toString();
        col->setProperty("NumberFormatLocal","@");
        qDebug()<<"col 1 NumberFormatLocal:"<<col->property("NumberFormatLocal").toString();
我可以看到第1列中的单元格确实设置为字符串类型(“@”)

但是,当我打开保存的excel文件时,其中的所有单元格都标记为常规类型,代码根本不起作用


救命啊!谢谢…

好的,我解决了这个问题。因为我安装了Office2007,“保存”功能将以2007格式保存文件,但我将其保存到“*.xls”,某些格式无法正确识别

因此,解决方案是,使用“SaveAs”将excel保存为2003格式

        QList<QVariant> lstParam;  
        qDebug()<<QDir::toNativeSeparators(file_path);
        lstParam.append(QDir::toNativeSeparators(file_path));  
        lstParam.append(-4143);   
        lstParam.append("");   
        lstParam.append("");   
        lstParam.append(false);   
        lstParam.append(false);   
        lstParam.append(1);  
        lstParam.append(2);  
        lstParam.append(false);   
        lstParam.append(false);   
        lstParam.append(false);   
        lstParam.append(false);   
        QVariant res = workbook->dynamicCall("SaveAs(QVariant, QVariant, QVariant, QVariant, QVariant, QVariant, QVariant, QVariant, QVariant, QVariant, QVariant, QVariant)", lstParam);  
        if(res.toBool())  
        {   
            qDebug()<<"SaveAs successful";
        }  
QList-lstParam;

qDebug()我也试过:range->dynamicCall(“SetNumberFormatLocal(constqvariant&)”,QVariant(“@”);但它也不起作用…
range->clear()为什么清除范围?我想释放资源。我也试着没有这个表达,没有区别。。。
            QAxObject * range = worksheet->querySubObject("Cells(int,int)", 1, 1);
            if (!range)
            {
                qDebug()<<"range does not exist";
            }
            QVariant tel=QString("%1").arg(record["tel"].toString()); //tel is 02167820096
            //qDebug()<<tel;
            //range->dynamicCall("SetValue(const QVariant&)", tel);
            qDebug()<<"NumberFormatLocal:"<<range->property("NumberFormatLocal").toString();
            qDebug()<<"NumberFormat:"<<range->property("NumberFormat").toString();
            range->setProperty("Value", tel.toString());
            range->clear();
NumberFormatLocal: "@" 
NumberFormat: "@" 
        QList<QVariant> lstParam;  
        qDebug()<<QDir::toNativeSeparators(file_path);
        lstParam.append(QDir::toNativeSeparators(file_path));  
        lstParam.append(-4143);   
        lstParam.append("");   
        lstParam.append("");   
        lstParam.append(false);   
        lstParam.append(false);   
        lstParam.append(1);  
        lstParam.append(2);  
        lstParam.append(false);   
        lstParam.append(false);   
        lstParam.append(false);   
        lstParam.append(false);   
        QVariant res = workbook->dynamicCall("SaveAs(QVariant, QVariant, QVariant, QVariant, QVariant, QVariant, QVariant, QVariant, QVariant, QVariant, QVariant, QVariant)", lstParam);  
        if(res.toBool())  
        {   
            qDebug()<<"SaveAs successful";
        }