Russian Qt Forum
Ноябрь 01, 2024, 06:37 *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

Войти
 
  Начало   Форум  WIKI (Вики)FAQ Помощь Поиск Войти Регистрация  

Страниц: [1]   Вниз
  Печать  
Автор Тема: Не получает значения ячеек в Excel  (Прочитано 4621 раз)
Kunashir
Гость
« : Апрель 12, 2011, 15:42 »

День добрый!

Пытаюсь получить данные из книги Excel:

Код:
void readExcel (QTableWidget* table, QString path)
{
    QAxObject *excel = new QAxObject( "Excel.Application",
                                      table );
    excel->dynamicCall( "SetVisible(bool)", true );
    QAxObject *workbooks = excel->querySubObject( "WorkBooks" );
    QAxObject *workbook = workbooks->querySubObject( "Open(QString)",
                                                     path );
    if (workbook) {
        QAxObject *sheets = workbook->querySubObject( "Sheets" );
        QAxObject *sheet = sheets->querySubObject("Item(1)");

        sheet->dynamicCall( "Select()" );

        int r = 0;
        table->setColumnCount(4);
        table->setRowCount(0);
        QString v = "";
        while(r >= 0) {
            for (int c=0; c<4 && r>=0; ++c){
                QAxObject *cell = sheet->querySubObject(
                    "cells(int, int)", r+1, c+1 );

               //cell->dynamicCall( "Select()" );
                qDebug()<<cell->dynamicCall("Value()").toString();
                if (cell)
                    v = cell->property("Value").toString();
                else
                    v = "";

               qDebug() << r << c << v;
                if (c == 0 && r > 0)
                {
                    if (v.length() != 0 && r < 10000)
                    {
                        table->insertRow(table->rowCount());
                        QAxObject *row = sheet->querySubObject(
                            "rows(int)", r+1 );
                        int points = row->property("Height").toInt();
                        int pixels = points * 1.2;
                        table->setRowHeight(r-1, pixels);
                    }
                    else
                        r = -11111;
                }
                if (r >= 0){
                    QTableWidgetItem *item = new QTableWidgetItem(v);
                    if (r == 0)
                        table->setHorizontalHeaderItem(c, item);
                    else
                        table->setItem(r-1, c, item);
                }
            }
            r++;
        }
    }
    excel->dynamicCall("Quit()");
}
Код работает, но значения ячеек всегда пустые. Не пойму в чем причина.
Записан
Kunashir
Гость
« Ответ #1 : Апрель 13, 2011, 19:43 »

Это была ошибка 4.7.0
Поставил 4.7.2 - все заработало!
Записан
Страниц: [1]   Вверх
  Печать  
 
Перейти в:  


Страница сгенерирована за 0.046 секунд. Запросов: 21.