乔山办公网我们一直在努力
您的位置:乔山办公网 > excel表格制作 > 如何用<em>Qt</em>读写<em>excel</em>的数据-qt

如何用<em>Qt</em>读写<em>excel</em>的数据-qt

作者:乔山办公网日期:

返回目录:excel表格制作


QAxWidget excel("Excel.Application"); 1) 显示当前窗 excel.setProperty("Visible", true); 2) 更改 Excel 标题: excel.setProperty("Caption", "Invoke Microsoft Excel");

QAxWidget excel("Excel.Application");
1) 显示当前窗口:
excel.setProperty("Visible", true);
2) 更改 Excel 标题栏:
excel.setProperty("Caption", "Invoke Microsoft Excel");
3) 添加新工作簿:
QAxObject * workbooks = excel.querySubObject("WorkBooks");
workbooks->dynamicCall("Add");
4) 打开已存在的工作簿:
workbooks->dynamicCall("Open (const QString&)", QString("c:/test.xls"));
5) 获取活动工作簿:
QAxObject * workbook = excel.querySubObject("ActiveWorkBook");
6) 获取所有的e68a84e8a2ade799bee5baa6e997aee7ad94337工作表:
QAxObject * worksheets = workbook->querySubObject("WorkSheets");
7) 获取工作表数量:
int intCount = worksheets->property("Count").toInt();
8) 获取第一个工作表:
QAxObject * worksheet = workbook->querySubObject("Worksheets(int)", 1);
9) 获取cell的值:
QAxObject * range = worksheet->querySubObject("Cells(int,int)", 1, 1 );
首先,我们打开前文所设置的工程项目。

然后,我们在界面设计窗口,加入一个label用于显示,要保存的目录。注意设置下相应的界面布局。

然后,我们在mainwindow.h类中创建一个newExcel的函数,用于实现新建excel的功能。

在对应的cpp文件中,我们要实现newExcel函数功能,首先,按前文的步骤,将application,workbook,worksheet进行赋值并设置。
其中,pApplication->setControl("Excel.Application");用于连接excel控件。pWorkBooks = pApplication->querySubObject("Workbooks");获取workbooks指针。

之后,我们需要用QFile先判断下是否已经存在同名文件,如果没有,我们通过操作excel组件进行创建。file.exist()是判断文件是否存在。如果不存在,我们新建一个excel,然后获取活动的workbook。然后通过dynamicCall调用SaveAs函数进行保存。

然后在构造函数中调用newExcel,我们可以创建一个名字为fileName的excel文件了。

程序运行以后,会弹e79fa5e98193e58685e5aeb9331出保存文件的对话框,在其中选择要保存的excel文件名,点击保存之后,会在你选择的路径中创建一个excel文件。

但是,当我们准备删除此文件的时候,会无法完成,这是因为,我们程序中使用pApplication操作excel的函数并没有关闭。

9
我们可以在源文件中添加以下代码关闭调用。这样就可以删除了。

方法/步骤

首先,我们要创建一个项目并进行初步的项目设置,过程参见本系列文章的第一篇。这里就不再多说了,我们将项目文件从qtcreator中打开。

为了显示读取到的数据,我们先在界面文件中添加一个Label,如果读取了数据可以在这里显示一下进行验证。

然后e799bee5baa6e79fa5e98193e59b9ee7ad94339,打开mainwindow.cpp文件,在其中引入适当的头文件,具体如图中所示。

接着,我们在头文件中打开置顶的excel文件,并对其中的对象类进行配置,因为前文已经介绍过,就不详细说了,具体代码如下:
QAxObject excel("Excel.Application");
excel.setProperty("Visible",false);
QAxObject *workbooks = excel.querySubObject("WorkBooks");
workbooks->dynamicCall("Open (const QString&)",QString("c:/a.xls"));
QAxObject *workbook = excel.querySubObject("ActiveWorkBook");//获取活动工作簿
QAxObject *worksheets = workbook->querySubObject("WorkSheets");//获取所有的工作表,如图

然后,我们开始获取第一工作表。

通过range查询对应的cell,然后获取cell中value值。代码如下:
QAxObject *range = worksheet->querySubObject("Cells(int,int)",1,1); //获取cell的值
QString strVal = range->dynamicCall("Value2()").toString();

接着,我们将得到的strVal显示label上用于验证是否成功读取。

我们再在c盘下新建一个a.xls文件,并且在第一个单元格输入一个字符串,如图所示.

之后,我们用程序运行下,查看程序是否达到预期的效果.可以看到程序运行成功了.

相关阅读

关键词不能为空
极力推荐

ppt怎么做_excel表格制作_office365_word文档_365办公网