crossplatform.ru

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

> построение таблицы
ArhiZhek
  опции профиля:
сообщение 15.11.2011, 16:05
Сообщение #1


Студент
*

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

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




Репутация:   0  


из этой программы нужно построить таблицы в excel по посчитанным данным (в правой части программы)
Прикрепленное изображение

при этом когда checkbox активный, то это значение и переходит в таблицу, а не активные - не переходят в таблицу
должна получиться такая таблица
Прикрепленное изображение

эта таблица должна сохраняться в excel и под ней появляться следующая таблица, когда будут посчитаны новые значения
также выделенное красным цветом поле в таблице изменяется в соответствии с выделенными checkbox`ами, т.е. сколько активных checkbox столько и будет выводить значений
в итоге нужно чтоб выводил вот такую таблицу
Прикрепленное изображение


Кто-то знает как это можно реализовать?
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
 
Начать новую тему
Ответов
silver47
  опции профиля:
сообщение 18.11.2011, 9:10
Сообщение #2


Активный участник
***

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

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




Репутация:   6  


Замысел выполнить реально. Но для этого придется немного поменять стратегию работы программы. Так как мы должны открывать файл уже содержащий данные, а пользователь при его закрытии должен его сохранить, причем под тем же именем. Это вопрос отдельный.

LineEdit нет нужды привязывать к конкретной ячейке Excel'евского листа, его значение можно выводить в произвольное место листа например:
range = StatSheet->querySubObject( "Cells(const QVariant&,const QVariant&)",QVariant(row),QVariant(column));          
range->dynamicCall("SetValue(const QVariant&)", QVariant(lineEdit->text()));

соответственно выведем в строку - row и колонку - column, а их уже можно определять по какой либо логике, необходимой Вам.

Как продолжить вывод со строки, следующей за последней заполненной?
определим строку
QAxObject* cell;
QVariant result;
int lastRow(0);
for(int i = 1; i <= 65535; ++i{
    cell = StatSheet->querySubObject("Cells(QVariant,QVariant)", i, 1);
    result = cell->property("Value");
    if(result.toString().isEmpty()){
        lastRow = i;
        break;
    }
}
delete cell;
// код из головы, возможны ошибки.

В переменно lastRow мы получим значение первой пустой строки. (обратите внимание не только на строку но и на колонку, если у Вас первая колонка всегда или иногда пуста, тогда есть смысл искать по втророй, третьей и так далее.)

UPD: Где-то когда-то видел как работать с экселевскими файлами без самого экселя, за давностью лет потерял (

Сообщение отредактировал silver47 - 18.11.2011, 9:21
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение

Сообщений в этой теме


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


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




RSS Текстовая версия Сейчас: 15.1.2025, 18:33