之前写过一个小程序,用Qt5和C++操作excel2010,那段代码当时是可行的,昨天又需要运行那段代码,不过现在电脑上运行的是office2013,发现原先的代码无法运行了,然后狂试了一通,总算试出来一个可行的版本,不过还是有一些小问题。这边把核心代码贴出来给有需要的同学。
void readExcel() {
HRESULT r = OleInitialize(0);
if (r != S_OK && r != S_FALSE)
{
qWarning("Qt:初始化Ole失败(error %x)", (unsigned int)r);
}
QString path = QDir::currentPath();
QString filepath = QDir::currentPath() + "filename";
QAxObject *excel = NULL;
QAxObject *workbooks = NULL;
QAxObject *workbook = NULL;
excel = new QAxObject("Excel.Application");
if (!excel) {
QMessageBox::critical(NULL, "错误信息", "EXCEL对象丢失");
return;
}
excel->dynamicCall("SetVisible(bool)", true); // 这句话如果是office2013中一定要,否则会无法读取文件
workbooks = excel->querySubObject("WorkBooks");
workbook = workbooks->querySubObject("Open(QString&)", filepath);
QAxObject * worksheets = workbook->querySubObject("WorkSheets"); // 获取打开的excel中所有的工作sheet
QAxOb

本文介绍了作者在使用Qt5和C++尝试操作Excel2013时遇到的问题,以及最终找到的解决方法。原来的代码在Office2010环境下正常运行,但在2013环境下出现问题。经过尝试,作者分享了能够成功运行的新代码,尽管还存在一些小问题。
最低0.47元/天 解锁文章
2184

被折叠的 条评论
为什么被折叠?



