qt中打开excel文件有两种方法
第一种,用QAxObject,在使用QAxObject,要在.pro文件中添加QT += axcontainer,同时在调用文件中添加#include <QAxObject>
打开文件代码如下:
void newExcel(QString &fileName)
{
QAxObject *pApplication = NULL;
QAxObject *pWorkBooks = NULL;
QAxObject *pWorkBook = NULL;
QAxObject *pSheets = NULL;
QAxObject *pSheet = NULL;
pApplication = new QAxObject();
pApplication->setControl("Excel.Application");
pApplication->dynamicCall("SetVisible(bool)", true);
pApplication->setProperty("DisplayAlerts", false);
pWorkBooks = pApplication->querySubObject("Workbooks");
QFile file(fileName);
if (file.exists()) {
pWorkBook = pWorkBooks->querySubObject("Open(const QString &)", fileName);
}
pSheets = pWorkBook->querySubObject("Sheets");
pSheet = pSheets->querySubObject("Item(int)", 1);
}
用这种方法有个问题,需要自己管理打开的对象,如果不管理,就会出现多次打开相同的文件
第二种,用QDesktopServices::openUrl方法
是本地文件时,在文件名前加上file:///,更方便的一种方法是QUrl::fromLocalFile()
代码如下:
void openExcel(QString &fileName)
{
QFile file(fileName);
if (file.exists()) {
QDesktopServices::openUrl(QUrl::fromLocalFile(fileName));
}
}