Как установить формат столбца 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";
}