Новая версия DynaLib и кое-что еще!

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

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

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

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

Здравствуйте!

Обновился сам сайт http://dynalib.narod.ru.
Можно скачать новую версию DynaLib 3.5 freeware.
Полная поддержка последнего релиза C60 и, естественно, предыдущих версий C5/C55.
Эта версия - промежуточная, перед выходом 4.0

Кроме этого, наконец выложил полноценный (без купюр) дистрибутив библиотеки Extended Evaluate - ExtEval 2.1
Просьба - не "светить" его "за бугром" - там он, типа продается за деньги :D
Исходники ExtEval, сорри, пока не выкладываю.

Ну, и еще там можно взять давно обещанный мною класс (вернее - классы) для непосредственного создания XLS-файла формата 4.0 без использования DDE/OLE-механизма.
Т.е., Excel и сам Office не нужны для его создания.
Назвал его просто DirectExcel или сокращенно - dExcel.
Второй класс dExcelTbl - "надстройка" для вывода в XLS-файл таблиц любой "навороченности" всего несколькими методами!
В начале файла dExcel.clw есть кратенькое описание и там-же, в архиве, есть примерчик.
Вообще, dExcel еще пока развивается и планирую добавить в него еще несколько "вкусностей".
Если что непонятно - пишите.
На праздниках, возможно, распишу доку по dExcel более подробно, по каждому методу.

Вообщем - удачного юзания!

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

(Добавление)
Обновился сам сайт http://dynalib.narod.ru.
Отличный подарок к Первомаю! Спасибо!

Олег, планируешь ли включить в эти классы возможность работы с готовыми XLS формата 4.0 ? Зачастую, гораздо удобнее формировать отчеты в заранее подготовленный в Excel шаблон: нарисовал шапку, формулы, диаграммы непосредственно в Excel, а из проги заполнил ячейки и все готово.
Было бы просто великолепно.

Удачи!
__________________________________
Владимир Якимченко (IСQ 16 993 194)
Написал: ClaList(2)
Гость

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

Не просветите насчет Winequ.inc, в архиве нет, а ведь нужен же???
Гость

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

Вчера надыбал модуль для конвертации XLS -> XML. Думаю, из сорцов можно слепить и обратное. Все-таки с XML работать приятнее.

--
Best regards,
Maxim Yemelyanov,
Enigma Soft Company
phone: +380 572 177977
WEB: http://enigmasoft.com.ua
e-mail: clalist@enigmasoft.com.ua
ICQ: 12253836

При попытке компиляции xlstest ругается на атрибут readonly
Это новая фишка C6 или я что-то пропустил?(Все работа,работа....)

C5 ШВС
Удачи!
==========================
http://www.fordm.ru
Алексей И. Латухин

Здравствуйте, Олег!
Большое спасибо за класс для работы с Excel.
Хотел уточнить один вопрос. При компиляции примера у меня не распознаются некоторые метки в прототипах. Возможно, были изменения в подключаемых файлах:

INCLUDE('ERRORS.CLW')
INCLUDE('EQUATES.CLW')
INCLUDE('WINEQU.INC')

Если не сложно, выложи, пожалуйста, используемые у тебя варианты этих файлов.

С уважением,
Вячеслав Черников support@finsoft.ryazan.ru
Написал: ClaList(2)
Гость

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

У меня с прилагаемым файлом все нормально.

Марина

Добрый день!
С этим файлом все компилится. Но в тестовом примере неверно выводятся в Excel строки таблицы. Наверно, ляпсус-манус.
Классно было бы туда еще картинки и диаграммы вставлять.

С уважением,
Вячеслав Черников support@finsoft.ryazan.ru
Написал: ClaList(2)
Гость

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

Олег,

Тест на Clarion 6 идет на ура. Дальше вешаю кнопочку [в Excel] на Browse
одного из рабочих проектов (Clarion 55G). В ембеде Accepted кнопки пишу код:

XLS.ShowError = True
XLS.CreateFile('Test.xls')
XLS.SetTblFormat(?Browse:1)
XLS.Write:Header()
XLS.Write:Table(Queue:Browse:1)
XLS.CloseFile(True)

Криво работает однако. Шапка есть, обрамление есть а данные пустые/нулевые.

Лечится легкой правкой прототипа метода Write:Row.

Было (dExcel.inc):
Write:Row PROCEDURE(*GROUP _Data,BYTE _LastRow=False),LONG,PROC,VIRTUAL

Исправлено:
Write:Row PROCEDURE(*QUEUE _Data,BYTE _LastRow=False),LONG,PROC,VIRTUAL

Соответственно и в dExcel.clw:
dExcelTbl.Write:Row PROCEDURE(*QUEUE _Data,BYTE _LastRow=False)

Благо все в сырцах. Спасибо за подарок!

С уважением,
---
Oleg Fomin <oleg@fomin.info>
... XLS-файла формата 4.0 без использования DDE/OLE-механизма.
В С55 и C6 результат экспорта разный.

в C55 в табличной части поля "Ответственный" и "Статья учета" слиты в первый столбец "Ответственный"

--
С уважением,
Алексей Дынин
daa@polad.ru
Написал: ClaList(2)
Гость

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

С этим файлом все компилится. Но в тестовом примере неверно выводятся в Excel строки таблицы. Наверно, ляпсус-манус.
У тебя, вероятно, на C5/C55 такое?
Это баг, или точнее - фича младших версий Клары, которую я как-то упустил. Спасибо Олегу Фомину - обратил внимание!
Младшие версии Клары не совсем корректно, имхо, воспринимают буфер очереди. В большинстве случаев они его воспринимают приоритетно как строку, а не как группу. Именно из-за этого вместо одного метода и вызывался другой, который предназначен для "ручного" разбора List-очередей типа:

LIST,...,FROM('Иванов И.И.!Производство!10.50!0!0!1500.00!...')

Вообщем, новый вариант dExcel - на сайте.
Классно было бы туда еще картинки и диаграммы вставлять.
А что - нужно?
В принципе, формат 4.0 это позволяет сделать.
Правда, там с этим делом немного "накручено".
Если разберусь - сделаю.
Где можно найти включаемый файл WINEQU.INC ?
Сорри! Вечно забываю вкладывать подобные файлы.
Хотя, он или что-то подобное есть в \LibSrc.

Вообщем, обновил dExcel.zip на сайте.

=============================
С уважением, Олег А. Руденко

(Добавление)
Это баг, или точнее - фича младших версий Клары, которую я как-то упустил. Спасибо Олегу Фомину - обратил внимание!
Да, на 5.5H. Поправил, как написал Олег Фомин - все работает.
А что - нужно?
В принципе, формат 4.0 это позволяет сделать.
Самый простой случай - экспорт прайс-листа. Там часто присутствует логотип фирмы.
Кстати, у тебя, если не ошибаюсь, нет еще вывода формул. В старом классе от Л.Ч. есть реализация (в сырцах). Было бы очень симпатично.

С уважением,
Вячеслав Черников

(Добавление)
Вчера надыбал модуль для конвертации XLS -> XML.
Думаю, из сорцов можно слепить и обратное.
Все-таки с XML работать приятнее.
Кому? Конечный (не "законченный"!:))) юзер любит видеть отчет именно в удобной для него форме.
А у большинства бухов и менеджеров, все таки, самым распространненым и удобным является именно MS Excel. И с этим приходится считаться.
Поэтому подобные конверторы и ходят в виде небольших утилит, о которых знают только те, кому это действительно необходимо.
... нарисовал шапку, формулы, диаграммы непосредственно в Excel, а из проги заполнил ячейки и все готово.
Было бы просто великолепно.
Хм... Я как-то об этом не думал. У меня практически все отчеты создаются "с нуля".
Хотя, то что ты предлагаешь - не трудно будет сделать.
Надо будет продумать только - как это лучше оформить.

Основная проблема здесь - при таком варианте хотелось-бы иметь полную инфу о какой-либо ячейке. А это уже требует введения матрицы ячеек в памяти. Вообщем - что-то типа маленького excel-чика:))
При попытке компиляции xlstest ругается на атрибут readonly
Это новая фишка C6 или я что-то пропустил?(Все работа,работа....)
С55/С60 пропускают этот аттрибут.
Правда он ничего не дает.

Обновленный dExcel.zip см. на сайте.
Криво работает однако.
Шапка есть, обрамление есть а данные пустые/нулевые.
Да уж - фича младших версий Клариона.
Приоритетно они воспринимают буфер очереди как строку, а не как группу. В С60 это дело поправлено.
Лечится легкой правкой прототипа метода Write:Row.
Лучше не править, а добавить новый метод.
Что и сделано в исправленном варианте.
См. сайт.
в C55 в табличной части поля "Ответственный" и "Статья учета" слиты в первый столбец "Ответственный"
Да, было такое дело - см. ответы на предыдущие письма коллег по этой теме.
Исправленный вариант - на сайте.

=============================
С уважением, Олег А. Руденко
Написал: ClaList(2)
Гость

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

Классная штука, юзвери в восторге.

Большое спасибо!!!
Гость

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

Олег, замечательно, все работает! Но маленькая ошибочка.
Поля со временем @T4, @T1 выдаются нулевыми.

Не срабатывает
loc:Data = Self.ClaTime2XLS(loc:Data)
в процедуре
dExcelTbl.Write:Row PROCEDURE(*GROUP _Data,BYTE _LastRow=False)

стало нормально выдаваться после
loc:rData REAL,AUTO
loc:rData = Self.ClaTime2XLS(loc:Data)
if Self.Write:NUMBER(loc:rData,Col#,Self.RowCurrent,IndexXF#) <> NoError
короче, переносом сюда куска из
dExcelTbl.Write:Row PROCEDURE(<STRING _Data>,BYTE _LastRow=False,<STRING
_Separator>)

При этом для @T4 и @T1 в Excel'е получаем формат @T4, так и должно быть?

Всего доброго, Иван.
короче, переносом сюда куска из
dExcelTbl.Write:Row PROCEDURE(<STRING _Data>,BYTE _LastRow=False,<STRING_Separator>>)
Во, блин! Я про этот кусок и забыл! В первом методе поправил, а когда дошел до второго, то решил общий функционал этих методов обьединить, что-бы не было дублирования, и оставил "на потом"! И напрочь забыл!
Сорри! Сейчас прямо и займусь - выложу чуть позже на сайт.
Спасибо!
При этом для @T4 и @T1 в Excel'е получаем формат @T4, так и должно быть?
Так в коде-же видно, что разделение по подформатам не производится. Честно говоря, сначала подумал - а оно надо?, а потом и вовсе "забил"! Ведь если по "честному", так надо вообще все доступные форматы парсить, что-бы сопоставить их соответствующим форматам Excel. В принципе, проблем с этим особых нет - весь парсинг прекрасно делает сама RTL через вызовы соответствующих процедур. Вопрос, как всегда, один - а оно надо?

Кстати! Вот что хотелось-бы добавить, так это - понимание Excel-ем форматов типа @Nxx`xB.
Т.е. - Blank-аттрибут. Есть в Excel-е что-то подобное или нет? Мне не удалось обнаружить.
Естественно, можно самому форматировать все поля по заданному Кларион-формату в строку и уже ее записывать в ячейку. Но при этом прийдется "бодаться" с настройками Excel-я насчет разделителей в дробных числах - честно говоря, не хочеться!

ВЧ> Да, на 5.5H. Поправил, как написал Олег Фомин - все работает.

Лучше, все таки, взять исправленный вариант с сайта.
Тот метод, который ты поправил нужен для других целей.
Самый простой случай - экспорт прайс-листа. Там часто присутствует логотип фирмы.
Кстати, у тебя, если не ошибаюсь, нет еще вывода формул. В старом классе от Л.Ч. есть реализация (в сырцах). Было бы очень симпатично.
А что за класс?
Я видел только один подобный для формата 2.1
Но там не было вывода формул.
Если у тебя есть такой класс, который выводит и формулы, то пришли, плиз!

=============================
С уважением, Олег А. Руденко

(Добавление)
Если у тебя есть такой класс, который выводит и формулы, то пришли, плиз!
Возможно, это более поздняя версия класса, который есть у тебя. Там последнее добавление - поддержка вставки формул для суммирования ячеек.
Версия формата 2.1.
Отправил на личный ящик.

С уважением,
Вячеслав Черников

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

Обновлен дистрибутив DynaLib (кое-что забыл вложить!).
Кроме того - там чуть-чуть новая версия.

Несколько вопросов по dExcel:
- достаточно-ли возможности записывать в XLS-файл картинки в BMP-формате? А то, что-то не хочеться "заморачиваться" на конвертации других форматов.
- нужны-ли в dExcelTbl методы загрузки данных из файлов/VIEW-структур по типу методов LoadTo из DynaLib?

=============================
С уважением, Олег А. Руденко

Думается, вполне достаточно.

С уважением,
Вячеслав Черников

Отсутствие сжатия картинок может быть серьезным основанием чтобы не покупать продукт. Эта тема не актуальна до тех пор, пока кто-нибудь не столкнется с xls-файлом с минимальной графикой и размером, измеряемым в мегабайтах.

Если заинтересует, для конвертации картинок я использовал DLL от этого производителя: http://www.smalleranimals.com/isource.htm
Мне понравилось у них:
- DLL
- поддержка основных графических форматов
- много алгоритмов масштабирования JPEG-картинок (актуально для меня)
- цена.

Regards,
Vasiliy Goncharenko.
JDi Data Corporation.

Да он и не планируется в качестве комерческого продукта!
Это, так сказать, opensource - со всеми вытекающими из
этого последствиями.

А что до сжатия - формат 4.0 умеет хранить графику только в WMF/BMP-форматах или в формате, который обрабатывается какой-либо посторонней программой. С WMF/BMP - все понятно.
С посторонным форматом - тоже нет проблем - он хранится в том виде, в каком его передала постороння программа.
Поэтому, имхо, проблем сжатия инфы в данном случае не предвидится!

=============================
С уважением, Олег А. Руденко

Пока потребности вставлять что-либо в Excel, кроме простых логотипов (или схем проезда до офиса/склада), у меня не возникало. Возможно, это будет интересно Олегу, как автору класса. За ссылку спасибо.

С уважением,
Вячеслав Черников
Написал: ClaList(2)
Ответить