一.问题
本来想用下面的代码修改excel表格字体为“宋体”,但是发现生成的excel上面的格式显示乱码
QAxObject* range = sheet->querySubObject("Range(const QString&)", rangeString);
// 获取单元格的字体对象
QAxObject* font = range->querySubObject("Font");
font->setProperty("Name", QStringLiteral("宋体")); //设置单元格字体
二.寻找方法
一开始以为是字符不是utf-8,尝试转成utf-8传入,发现更奇怪了,变成数字了
font->setProperty("Name", QStringLiteral("宋体").toUtf8()); //设置单元格字体
尝试传入英文,发现结果却是正常的
font->setProperty("Name", QStringLiteral("Microsoft YaHei")); //设置单元格字体
尝试qdebug打印,结果发现正常传入“宋体”打印正常,打印QStringLiteral("宋体")乱码
font->setProperty("Name", QStringLiteral("宋体")); //设置单元格字体
qDebug() << "宋体"<<endl;
qDebug() << QStringLiteral("宋体") << endl;
三.解决方法
正常传入“宋体”
QAxObject* range = sheet->querySubObject("Range(const QString&)", rangeString);
// 获取单元格的字体对象
QAxObject* font = range->querySubObject("Font");
font->setProperty("Name","宋体"); //设置单元格字体