QString fileName = QFileDialog::getOpenFileName(this, tr("Открыть файл"), QApplication::applicationDirPath(), tr("All Files (*)")); QFile file(fileName); QFileInfo fi(file); QString ext = fi.completeSuffix(); //открывать файлы екселя формата 97-2003 QAxObject* excel = new QAxObject( "Excel.Application", 0 ); QAxBase* workbooks = excel->querySubObject( "Workbooks" ); QAxBase* workbook = workbooks->querySubObject( "Open(const QString&)",fileName /* "C:\\Users\\LocalDev\\teste.xls" */); QAxObject* sheets = excel->querySubObject("Worksheets"); //количество листов в книге int sheetsCount = sheets->dynamicCall("Count").toInt(); //записываем название листов в массив QStringList SheetNames; for (int i = 1; i <= sheetsCount; i++) { QAxObject* sheetsName = sheets->querySubObject("Item(const QVariant&)", QVariant(i)); SheetNames<<sheetsName->dynamicCall("Name").toString().toLower(); } //перебираем листы и заполняем необходимые массивы for (int i = 1; i <= sheetsCount; i++) { SetSheet = sheets->querySubObject( "Item(const QVariant&)", QVariant(i) ); //получаем количество используемых строк QAxObject* usedRangeR = SetSheet->querySubObject("UsedRange"); QAxObject* rows = usedRangeR->querySubObject("Rows"); countRows = rows->property("Count").toInt(); //получаем количество используемых столбцов QAxObject* usedRangeC = SetSheet->querySubObject("UsedRange"); QAxObject* columns = usedRangeC->querySubObject("Columns"); countCols = columns->property("Count").toInt(); } //читаем данные из ячеек for (int j = 4; j <= countRows; j++) { for (int k = 1; k <= 5; k++) { QAxObject* cell = SetSheet->querySubObject("Cells(int,int)", j, k);//строка, столбец QVariant value = cell->property("Value"); PCH1[j - 4][k] = value.toDouble(); } } ui->Output->appendPlainText("РСН1 в таблицу занесен"); for (int j = 4; j <= countRows; j++) { for (int k = 1; k <= 5; k++) { QAxObject* cell = SetSheet->querySubObject("Cells(int,int)", j, k);//строка, столбец QVariant value = cell->property("Value"); PCH2[j - 4][k] = value.toDouble(); } } ui->Output->appendPlainText("РСН2 в таблицу занесен"); for (int j = 4; j <= countRows; j++) { for (int k = 1; k <= 5; k++) { QAxObject* cell = SetSheet->querySubObject("Cells(int,int)", j, k);//строка, столбец QVariant value = cell->property("Value"); PCH3[j - 4][k] = value.toDouble(); } } ui->Output->appendPlainText("РСН3 в таблицу занесен"); for (int j = 4; j <= countRows; j++) { for (int k = 1; k <= 5; k++) { QAxObject* cell = SetSheet->querySubObject("Cells(int,int)", j, k);//строка, столбец QVariant value = cell->property("Value"); PCH4[j - 4][k] = value.toDouble(); } } ui->Output->appendPlainText("РСН4 в таблицу занесен"); for (int j = 4; j <= countRows; j++) { for (int k = 1; k <= 5; k++) { QAxObject* cell = SetSheet->querySubObject("Cells(int,int)", j, k);//строка, столбец QVariant value = cell->property("Value"); PCH5[j - 4][k] = value.toDouble(); } } ui->Output->appendPlainText("РСН5 в таблицу занесен"); for (int j = 4; j <= countRows; j++) { for (int k = 1; k <= 5; k++) { QAxObject* cell = SetSheet->querySubObject("Cells(int,int)", j, k);//строка, столбец QVariant value = cell->property("Value"); PCH6[j - 4][k] = value.toDouble(); } } ui->Output->appendPlainText("РСН6 в таблицу занесен"); ui->Output->appendPlainText("Выполнено все"); workbook->dynamicCall("Close()"); excel->dynamicCall("Quit()");
for (int i = 1; i <= 5; i++) { for (int j = 4; j <= countRowsRod; j++) { QAxObject* cell = SetSheetRod->querySubObject("Cells(int,int)", j, i);//строка, столбец QVariant value = cell->property("Value"); QTableWidgetItem* item = new QTableWidgetItem(value.toString()); ui->rodPCH6->setItem(j - 4, i, item); if (NULL == value.toDouble()) { continue; } rodPCH6[j - 4][i] = value.toDouble(); } } for (int j = 0; j < countRowsRod - 2; j++) { ui->Output->appendPlainText(QString::number(rodPCH6[j][1])); }