常州武进网站建设,怎样做网站网站,视频网站开发文档,电影网站源码程序在使用qt读取Excel文件内容的时候#xff0c;使用下列方式#xff1a;
worksheet-querySubObject(Cells(int,int), j,i)-property(Value).toString();
不会报错#xff0c;但读取不到数据。多次尝试发现应该将property改为dynamicCall
下…在使用qt读取Excel文件内容的时候使用下列方式
worksheet-querySubObject(Cells(int,int), j,i)-property(Value).toString();
不会报错但读取不到数据。多次尝试发现应该将property改为dynamicCall
下面是用qt读取excel文件内容的实例。
读取方式为按列读取以QVectorQVectorQString形式存储数据。
void MainWindow::getExcelContent(QVectorQVectorQString result, QStringList filePathes)
{QAxObject *excel NULL;QAxObject *workbooks NULL;QAxObject *workbook NULL;foreach (const QString filePath, filePathes) {CoInitializeEx(NULL, COINIT_MULTITHREADED);excel new QAxObject(Excel.Application);QAxObject *worksheet workbook-querySubObject(WorkSheets(int), 1);//读取第一个表QAxObject *usedRange worksheet-querySubObject(UsedRange);//有数据的矩形区域QAxObject * rows usedRange-querySubObject(Rows);QAxObject * columns usedRange-querySubObject(Columns);int Rows rows-property(Count).toInt();int Cols columns-property(Count).toInt();//按照列方式读取数据for(int i1;iCols; i){QVectorQString vecDataRow;for(int j1;jRows;j){QString txt worksheet-querySubObject(Cells(int,int), j,i)-dynamicCall(Value).toString(); //获取单元格内容vecDataRow.append(txt);}result.push_back(vecDataRow);}workbook-dynamicCall(Close());excel-dynamicCall(Quit());if(excel){delete excel;excel NULL;}}
}
下面是打开文件方式其中有单选格式方式打开文件和多选格式选择打开文件。
QString filePath QFileDialog::getOpenFileName(this, QStringLiteral(选择Excel文件),,QStringLiteral(Excel file(*.xls *.xlsx)));if(filePath.isEmpty())return;
filePathes QFileDialog::getOpenFileNames(this, tr(Open File),D:/,tr(Excel files(*.xls *.xlsx);;CSV files (*.csv)));