1

私はファイルをエクセルするためにいくつかの電話番号を書きたいです、それらのいくつかは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();

出力は

col 1 NumberFormatLocal: "G/通用格式" 
col 1 NumberFormatLocal: "@" 

1列目のセルが実際に文字列型( "@")に設定されていることがわかります。

            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: "@" 

しかし、保存したExcelファイルを開くと、その中のすべてのセルが一般的なタイプとしてマークされ、コードがまったく機能しませんでした。

ヘルプ!ありがとう...

4

1 に答える 1

0

OK、私はこの問題を解決しました。Office2007をインストールしているため、「保存」機能を使用するとファイルは2007形式で保存されますが、「*。xls」に保存すると、一部の形式が正しく認識されません。

したがって、解決策は、「名前を付けて保存」を使用して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";
        }  
于 2012-06-22T04:15:51.740 に答える