crossplatform.ru

Здравствуйте, гость ( Вход | Регистрация )

 
Ответить в данную темуНачать новую тему
> Excel не получается прочитать ячейку
LEO
  опции профиля:
сообщение 27.9.2010, 12:27
Сообщение #1


Студент
*

Группа: Новичок
Сообщений: 14
Регистрация: 8.3.2009
Пользователь №: 595

Спасибо сказали: 0 раз(а)




Репутация:   0  


Всем доброго времени суток. Столкнулся с проблемой: запись в таблицу происходит замечательно, а вот прочитать не удается. wiki уже смотрел + кучу всего облазил. ниже привожу код, с права значения взяты с дебагера. Заранее благодарен.
Раскрывающийся текст
    QAxObject* excel = new QAxObject( "Excel.Application", this );
    excel->dynamicCall( "SetVisible(bool)", true );
    QAxObject *workBooks = excel->querySubObject("Workbooks");
    QAxObject *workBook = workBooks->querySubObject("Open(const QString&)", this->fileName);
    QAxObject *sheets = workBook->querySubObject("Sheets");
    QAxObject *currentSheet = sheets->querySubObject("Item(const QVariant&)", QVariant(this->sheetName));
    currentSheet->dynamicCall("Select()");
    QAxObject* cell = currentSheet->querySubObject("Range(C5)");
    cell->dynamicCall("Select()");
    cell->dynamicCall("SetValue(const QVariant&)", QVariant("TEST"));
//До этого момента все идет как по маслу
    QString r1 = cell->property("Value").toString();     // r1 = ""
    r1 = cell->dynamicCall("Value").toString();           // r1 = ""
    r1 = cell->property("Value()").toString();              // r1 = ""
    r1 = cell->dynamicCall("Value()").toString();         // r1 = ""
    QVariant r2 = cell->property("Value");       // r2->data = invalid
    r2 = cell->dynamicCall("Value");               // r2 = invalid
    r2 = cell->property("Value()");                  // r2 = invalid
    r2 = cell->dynamicCall("Value()");             // r2 = invalid
    r2 = cell->property("Value").toString();            // r2 = ""
    r2 = cell->dynamicCall("Value").toString();       // r2 = ""
    r2 = cell->property("Value()").toString();         // r2 = ""
    r2 = cell->dynamicCall("Value()").toString();    // r2 = ""
Офис 2010, QT 4.7
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
LEO
  опции профиля:
сообщение 27.9.2010, 13:24
Сообщение #2


Студент
*

Группа: Новичок
Сообщений: 14
Регистрация: 8.3.2009
Пользователь №: 595

Спасибо сказали: 0 раз(а)




Репутация:   0  


Из найденных вариантов работает только этот, но это какой-то изврат. Подскажите пожалуйста возможную альтернативу данному решению проблемы.
Цитата
Новые находки - доступ к символам внутри ячейки:
cell_ascii = sheet_ascii->querySubObject("cells(int,int)",i,j);
cell_ascii->dynamicCall("Select()");
char_ascii = cell_ascii->querySubObject("Characters(int,int)",s,l);
QChar char = char_ascii->property("Text").toString().at(0);
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
LEO
  опции профиля:
сообщение 27.9.2010, 15:59
Сообщение #3


Студент
*

Группа: Новичок
Сообщений: 14
Регистрация: 8.3.2009
Пользователь №: 595

Спасибо сказали: 0 раз(а)




Репутация:   0  


Проблема все таки остается, так как для числовых значений результат получаем 0 и ошибку:
Цитата
QAxBase: Error calling IDispatch member Text: Exception thrown by server
Code : 1004
Source : Microsoft Excel
Description: ?????????? ???????? ???????? Text ?????? Characters
Help : xlmain11.chm
Connect to the exception(int,QString,QString,QString) signal to catch this exception
Подскажите пожалуйста куда копать
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
dark_elf
  опции профиля:
сообщение 11.10.2010, 16:39
Сообщение #4


Новичок


Группа: Новичок
Сообщений: 1
Регистрация: 11.10.2010
Пользователь №: 2103

Спасибо сказали: 0 раз(а)




Репутация:   0  


Вот это почитай (сломали они что-то в 4.7.0, в 4.6.3 работает).

http://bugreports.qt.nokia.com/browse/QTBUG-13845
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
Rocky
  опции профиля:
сообщение 24.10.2010, 16:13
Сообщение #5


Старейший участник
****

Группа: Участник
Сообщений: 530
Регистрация: 22.12.2008
Из: Санкт-Петербург
Пользователь №: 463

Спасибо сказали: 22 раз(а)




Репутация:   7  


А я щас столкнулся вообще с тем, что код, который менял ширину ячейки в excel, обводил ячейки в рамку - ни фига не работает... Блин. Придется наверное обратно с 4.7 уходить на 4.6.3 =(
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
arial
  опции профиля:
сообщение 17.11.2010, 11:20
Сообщение #6


Студент
*

Группа: Участник
Сообщений: 39
Регистрация: 27.9.2009
Пользователь №: 1121

Спасибо сказали: 9 раз(а)




Репутация:   0  


Получилось эту проблему на 4.7 решить? А то я тоже с ней столкнулся.
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение

Быстрый ответОтветить в данную темуНачать новую тему
Теги
Нет тегов для показа


1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0




RSS Текстовая версия Сейчас: 29.3.2024, 4:50