Excel2007关于Workbooks.open xlsx文件

Excel2007关于Workbooks.open xlsx文件,第1张

Sub SSDS()

ApplicationWorkbooksOpen "F:\111xlsx"

End Sub

================================

还真得不知道你的问题,出在那里。以上程序,我再EXCEL 2003 和 EXCEL 2007 里面测试都没有问题的。如果EXCEL 2003 运行时,会提醒转换文件格式,然后打开。如果用EXCEL 2007 就没有提示,直接打开。我的机子上,同时安装了 2003 和 2007。

在excel的VBA下测试正常,看您的 MainFilenameCaption 是否是合法的文件名路径

还有,这个文件是否已经被打开,是否存在。

引用的excel库是否还正常。

首先在pro文件中添加CONFIG += qaxcontainer

接着程序实现

QString filepath=QFileDialog::getSaveFileName(this,tr("Save orbit"),"",tr("Microsoft Office 2007 (xlsx)"));//获取保存路径  

    if(!filepathisEmpty()){  

        QAxObject excel = new QAxObject(this);  

        excel->setControl("ExcelApplication");//连接Excel控件  

        excel->dynamicCall("SetVisible (bool Visible)","false");//不显示窗体  

        excel->setProperty("DisplayAlerts", false);//不显示任何警告信息。如果为true那么在关闭是会出现类似“文件已修改,是否保存”的提示  

  

        QAxObject workbooks = excel->querySubObject("WorkBooks");//获取工作簿集合  

        workbooks->dynamicCall("Add");//新建一个工作簿  

        QAxObject workbook = excel->querySubObject("ActiveWorkBook");//获取当前工作簿  

        QAxObject worksheets = workbook->querySubObject("Sheets");//获取工作表集合  

        QAxObject worksheet = worksheets->querySubObject("Item(int)",1);//获取工作表集合的工作表1,即sheet1  

        QAxObject cellX,cellY;  

        for(int i=0;i<curRow;i++){  

            QString X="A"+QString::number(i+1);//设置要 *** 作的单元格,如A1  

            QString Y="B"+QString::number(i+1);  

            cellX = worksheet->querySubObject("Range(QVariant, QVariant)",X);//获取单元格  

            cellY = worksheet->querySubObject("Range(QVariant, QVariant)",Y);  

            cellX->dynamicCall("SetValue(const QVariant&)",QVariant(ui->tableWidget->formula(i,0)toInt()));//设置单元格的值  

            cellY->dynamicCall("SetValue(const QVariant&)",QVariant(ui->tableWidget->formula(i,1)toInt()));  

        }  

  

        workbook->dynamicCall("SaveAs(const QString&)",QDir::toNativeSeparators(filepath));//保存至filepath,注意一定要用QDir::toNativeSeparators将路径中的"/"转换为"\",不然一定保存不了。  

        workbook->dynamicCall("Close()");//关闭工作簿  

        excel->dynamicCall("Quit()");//关闭excel  

        delete excel;  

        excel=NULL;  

    }

下面的就是你想要的代码,先在工程里引用Excel,程序测试通过!!!

Dim NewApp As New ExcelApplication

Dim NewSheet As New ExcelWorksheet

Dim NewBook As New ExcelWorkbook

Set NewApp = New ExcelApplication

Set NewBook = NewAppWorkbooksOpen("d:\1xls", , , , "123")

‘第一位为路径,第五位为密码

Set NewSheet = NewBookWorksheets(1)

str1 = NewSheetCells(1, 1): str2 = NewSheetCells(1, 2)

‘获取a1,b1的数据

label1caption=str1

Text1Text = str2

NewBookClose

NewAppQuit

以上就是关于Excel2007关于Workbooks.open xlsx文件全部的内容,包括:Excel2007关于Workbooks.open xlsx文件、VB 打开Excel 提示 对象 “Open” 方法“workbook” 失败、QAxObject *workBooks = obj->querySubObject("Workbooks"); workBooks 返回值为NULL ;等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/web/9408038.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-04-28
下一篇 2023-04-28

发表评论

登录后才能评论

评论列表(0条)

保存