Помогите с DirectExcel

Программы на Clarion, шаблоны, библиотеки и пр.

Модератор: Дед Пахом

Правила форума
При написании вопроса или обсуждении проблемы, не забывайте указывать версию Clarion который Вы используете.
А так же пользуйтесь спец. тегами при вставке исходников!!!
Ответить
Гость

Сообщение Гость »

Hello clalist,
C5.5, ШВС
Пробую пользовать классы DirectExcel Олега Руденко для простой таблицы из очереди без шапки.
За основу взял пример из комплекта DExcel

В Global Properties вставляю

Код: Выделить всё

       embed
        INCLUDE('dEXCEL.INC')
       embed
        XLS    dExcelTbl
 
Procedure   formxls

T                   QUEUE,PRE(T)
Name                STRING(60)
Sum1                 DECIMAL(11,2)
Sum2                 DECIMAL(11,2)
Sum3                 DECIMAL(11,2)
Sum4                 DECIMAL(11,2)
                    .
  code
  ! формирую очередь Table
   .............................
  ! формирую таблицу

  XLS.ShowError = True
  XLS.CreateFile('Rpt.xls')
     !XLS.SetTblFormat(?RptList)    ! строка из примера пропускаю
     !XLS.Write:Header()            ! строка из примера пропускаю
  XLS.Write:Table(T)
  XLS.CloseFile(True)
Получаю пустую таблицу.
Подозреваю, что из-за пропуска XLS.SetTblFormat(?RptList), а форматировать таблицу и задавать шапку без структуры List нельзя?

Классами никогда не пользовался, видимо поэтому очевидные вещи не доходят.
В исходнике записано что для создания таблицы обязательными пунктами являются:
1. Создаем пустой файл (метод CreateFile).
.....................
9.Записываем данные в нужные ячейки, используя созданные ранее стили отображения (метод Write). ?????????
10.Закрываем созданный файл

Что делаю неправильно? или может кто-нибудь просто бросит пример формирования несложной таблицы в APP?

Best regards,
ATAMANOV mailto:ase@email.kht.ru


(Добавление)

SetTblFormat() на данный момент единственный способ заставить правильно сформироваться Excel-файлу, если, конечно, не курочить сами классы. То есть вся информация о количестве столбцов таблицы берётся из листбокса. Олег Руденко обещал в следующей версии dExcel сделать управление формированием более гибким.

С уважением, Михаил.
Написал: ClaList(2)
Гость

Сообщение Гость »

Подозреваю, что из-за пропуска XLS.SetTblFormat(?RptList), ...
Да, именно из-за этого. Первоначально класс dExcelTbl писался именно в расчете на автоформирование Excel-таблицы из обычного бровза. Т.е. по информации из List-контрола этого бровза.
Именно этим и занимаются опущенные тобою методы.
... а форматировать таблицу и задавать шапку без структуры List нельзя?
Можно, но исключительно ручками.
В этом случае нельзя будет использовать метод Write:Table, так как он "завязан" на информацию, созданную методом SetTblFormat.
Т.е. прийдется ручками рисовать шапку и выводить каждое поле поочередно методами dExcel.Write:xxx
Для автоматизации создания XF-стилей для шапки и каждой колонки строки используются методы AddTblXF:xxx
После этого, используя индексы XF-стилей, созданных вышеназванными методами, в цикле выводим каждую строку очереди по ячейкам (колонкам).
Что-бы здесь не писать много, зделаем так - на днях выложу на сайт новую версию и включу в нее более подробное описание по каждому методу либы и в тестовом примере сделаю рутинку вывода тестовой таблицы в XLS-файл именно по вышеописанной схеме.
Т.е. без использования List-контрола.
А вообще, в следующих версиях планируется метод для создания образа таблицы не только на основе List-контрола, а и на основе структуры любой группы/очереди/файла или просто по строковому описанию.
В исходнике записано что для создания таблицы обязательными пунктами являются:
1. Создаем пустой файл (метод CreateFile).
.....................
9.Записываем данные в нужные ячейки, используя созданные ранее стили отображения (метод Write). ?????????
10.Закрываем созданный файл

Хмм... Ты немного путаешь :D
В исходнике написано следующее:
"Вообще, идеология создания какого-либо XLS-файла средствами данного класса следующая:"

Про таблицу здесь ничего не сказано!

=============================
С уважением, Олег А. Руденко.
Oleg_Rudenko@mail.ru
Oleg_Rudenko@mail333.com
Библиотека DynaLib
http://dynalib.narod.ru
Написал: ClaList(2)
Ответить