之前写过一个小程序,用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("Wor