天天看點

QAxBase Excel生成單元格超連結

excel中增加超連結的接口,一直不知道第一個參數Anchor在Qt中要怎麼展現。

QAxBase Excel生成單元格超連結

翻看幫助檔案,發現一個asVariant方法可以傳回一個Range接口

QAxBase Excel生成單元格超連結

接下來的代碼就簡單了:

QAxObject *p_application = new QAxObject("Excel.Application");
p_application->dynamicCall("SetVisible(bool)", false);
p_application->setProperty("DisplayAlerts", false);
QAxObject *p_workbooks = p_application->querySubObject("Workbooks");
p_workbooks->dynamicCall( "Open(const QString &)", "D:/demo.xls" );
QAxObject *p_workbook = p_application->querySubObject("ActiveWorkBook");
QAxObject *pSheet = p_workbook->querySubObject( "Worksheets(int)", 1 );

QString s_fn = "file:///d:\\image\\1.jpg";

QAxObject *range = pSheet->querySubObject("Cells(int,int)", 1, 1);
QAxObject *hyperlinks = range->querySubObject("Hyperlinks");
hyperlinks->dynamicCall("Add(QVariant, QString, QString, QString, QString)", range->asVariant(), s_fn, "", "", QString("123"));
p_workbook->dynamicCall( "SaveAs( const QString&, int, const QString&, const QString&, bool, bool )", "D:\\demo.xls", 56, QString(""), QString(""), false, false );
p_workbook->dynamicCall( "Close()" );
p_application->dynamicCall("Quit()");