Как установить формат столбца Excel через Qt?

Я хочу написать некоторые номера телефонов в файл 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();

Выход

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

и я вижу, что ячейка в первом столбце действительно имеет строковый тип ("@").

            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, все ячейки в нем помечаются как общий тип, код не работает вообще!

Помогите! Спасибо...

1 ответ

Решение

ОК, я решил эту проблему. Поскольку я устанавливаю 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";
        }  
Другие вопросы по тегам