Коварный шеф сказал что выгрузка неполной тысячи за 25-30 секунд это долго. Пришлось искать так сделать быстрее. Решение было найдено. Не особо быстро, в отличии от скорости работы - 2-3 секунды что всех радует. Решение ниже
Значительно увеличивает скорость вывода в сравнении с поячеечным способом.
// получение указателя на левую верхнюю ячейку [row][col] ((!)нумерация с единицы) QAxObject* Cell1 = StatSheet->querySubObject("Cells(QVariant&,QVariant&)", row, col); // получение указателя на правую нижнюю ячейку [row + numRows - 1][col + numCols - 1] ((!) numRows>=1,numCols>=1) QAxObject* Cell2 = StatSheet->querySubObject("Cells(QVariant&,QVariant&)", row + numRows - 1, col + numCols - 1); // получение указателя на целевую область QAxObject* range = StatSheet->querySubObject("Range(const QVariant&,const QVariant&)", Cell1->asVariant(), Cell2->asVariant() ); // список ячеек строки QList<QVariant> cellsList; // список строк QList<QVariant> rowsList; for (int i = 0; i < numRows; i++) { cellsList.clear(); for (int j = 0; j < numCols; j++) cellsList << i*j; // в список строк добавляется QVariant каждой строки rowsList << QVariant(cellsList); } // собственно вывод range->setProperty("Value", QVariant(rowsList) ); // освобождение памяти delete range; delete Cell1; delete Cell2;
Утянуто отсюда
Комментариев нет:
Отправить комментарий