文章目录1.xls/xlsx文件数据表小部件表2 .导出到表小部件表数据xls/xlsx文件
QT附带的table构件控件可以实现表格的显示功能。 刚开始学习表格构件,只是自己提前制作表格和决定数据,但真正的软件不会决定数据格式。 让我们看看如何导入xls文件并自动生成表。
我用的这个方法导入/导出比较慢,网上还有一个更快,所以有机会再写。
前期准备:
添加pro文件
QT =axcontainer
将#includeActiveQt/QAxObject添加到头文件
互联网上写着#include
根据版本的不同,代码的写法可能会不同。 我自己测试。
一.将xls/xlsx文件数据导入到表小部件表中
右键单击导入按钮并导航至该插槽,然后添加单击的代码
QString strData; void main window : on _ push button _ 17 _ clicked ((//首先,文件选择器对话框qstringcurpash=qdir 3360: current path ) ) //当前路径QString dlgTitle='选择表单文件'; //xls和xlsx格式的文件都可以,xlsx与xls兼容。 请注意,在每种类型之后添加两个分号QString filter='表文件(*.xls *.xlsx )。 xls文件(*.xls; xlsx文件(*.xlsx; 所有文件(*.* ); //创建文件选择对话框qstringlistfilelist=qfiledialog 33603360 getopenfilenames (this,dlgTitle,curPash,filter ); if (文件列表. count ) )1)返回; for(intI=0; ifileList.count (; I ()//保存文件地址strData=fileList.at(i ) I; 连接到Excel控件qaxobjectexcel (' excel.application ' ); //警告消息excel.setproperty('visible ',false ); //工作簿集合qaxobject * workbooks=excel.query subobject (' workbooks ); 工作簿动态呼叫(open (const qstring ),str ); //活动工作簿qaxobject * workbook=excel.query subobject (active workbook ); //获取工作表集合中的工作表1,输入sheet1qaxobject * worksheet=workbook-query subobject (' sheets (int ),1 ); QAxObject *range; 单元格值QString strVal='hull '; QStringList header; //将所有初始表矩阵设置为0ui-table构件设置行(0); //设置行数为0ui-table构件- set column count (0; //将列数设置为0 int count=0; for(intI=1; irow; I )请注意,setRowCount中的函数是总数,而不是附加函数。 很多人最初认为这个函数是总数,程序经常崩溃的UI-table widget-set rowcount (UI-table widget-rowcount () ); for(intj=1; jcolumn; j ) if(I==1) ui-table widget-set column count (ui-table widget-column count ) )1); range=worksheet-query subobject (cells (int,int ),I,j ); 要检索单元格值的strval=range-dynamic call (' value2() ) ) ).toString ); 标题; //设置表首}else{probar-setvalue(count
); range = worksheet->querySubObject("Cells(int,int)",i,j); //获取cell的值 strVal = range->dynamicCall("Value2()").toString(); ui->tableWidget->setItem(i-2,j-1,new QTableWidgetItem(strVal)); } } if(i == 1) { ui->tableWidget->setHorizontalHeaderLabels(header); } } ui->tableWidget->setRowCount(ui->tableWidget->rowCount()-1); }}代码中的工作表就是xls文件打开左下角的这个:
我们右击导入按钮,转到槽,添加被点击后的代码