crossplatform.ru

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

 
Ответить в данную темуНачать новую тему
> построение таблицы
ArhiZhek
  опции профиля:
сообщение 15.11.2011, 16:05
Сообщение #1


Студент
*

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

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




Репутация:   0  


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

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

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


Кто-то знает как это можно реализовать?
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
ArhiZhek
  опции профиля:
сообщение 16.11.2011, 17:55
Сообщение #2


Студент
*

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

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




Репутация:   0  


Подскажите пожалуйста :cray:
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
PAFOS
  опции профиля:
сообщение 17.11.2011, 14:46
Сообщение #3


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

Группа: Участник
Сообщений: 258
Регистрация: 27.12.2010
Из: Дмитров
Пользователь №: 2309

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




Репутация:   8  


Где-то в вики была статья про то как использовать Excel в Qt. Ищи)
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
silver47
  опции профиля:
сообщение 17.11.2011, 18:22
Сообщение #4


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

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

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




Репутация:   6  


2 ArhiZhek что именно не получается? Как записать чего-то в эксель пример давал. Чтобы проверить выбран ли QCheckBox, достаточно
if(QCheckBox::isChecked)
. Начните с более простого форматирования листа, без добавления и прочего. По шагам:

1 Просмотреть выданный мною пример и попробовать вывести значения в другие части листа, меняя позицию курсора.
2 Проверяя, выбран ли чекбок, перенести значение на лист.
3 Поиграться с форматированием и формулами на листе, подумать как упростить рассчет, в конечном итоге, добитьтся необходимого внешнего вида выводимого отчета.
3а Научиться определять последнюю заполненую строку листа. И начинать заполнять с нее. В том же факе сказано не только как ЗАПИСАТЬ данные на лист, но и как ПРОЧИТАТЬ их.

В общем и целом: форум для помощи по вопросам, с которыми люди сталкиваются изучая программирование, за Вас здесь программу никто не напишет. Если Вам нужна программа, то есть ресурсы фрилансеров. Если Вы хотите научиться писать программы, то попробуйте последовательно выполнить эти 4 незамысловатых пункта. В каждом конкретном вопросе, если что не получается, обращайтесь поможем.
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
ArhiZhek
  опции профиля:
сообщение 18.11.2011, 8:08
Сообщение #5


Студент
*

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

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




Репутация:   0  


нет, нет я вовсе и не хочу чтоб за меня прогу накатали... неудачно вопрос поставил :blush2: дело в том, что если я привяжу LineEdit к одной ячейке экселя, то он так и будет за ней закреплен, возможно ли этот LineEdit закреплять за несколькими ячейками, ну вот например получились числа в нескольких LineEdit, из них построилась таблица, посчитали второй раз и вот данные посчитанные из второго строились в экселе под построенной таблицей из первых данных, и таблицы будут разные по наполняемости...
Мой замысел реально ли выполнить?
А за пример спасибо огромное!!!
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
silver47
  опции профиля:
сообщение 18.11.2011, 9:10
Сообщение #6


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

Группа: Участник
Сообщений: 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
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение

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


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




RSS Текстовая версия Сейчас: 26.6.2022, 10:29