powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / PowerBuilder [игнор отключен] [закрыт для гостей] / Разработка конвертора данных Powersoft Report -> Excel
25 сообщений из 49, страница 1 из 2
Разработка конвертора данных Powersoft Report -> Excel
    #33437511
AVGritsenko
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Разработка конвертора данных Powersoft Report -> Excel

Предлагается разовая (для начала) работа

Необходимо разработать хороший конвертер данных dw PowerBuilder
или файлов Powersoft Report в Excel ( Word)

Кто возьмется?
Оплата по факту при результатах лучше чем "dw2xls"
Возможен % от продаж заинтересованным клиентам ( а это
весь круг пользователей приложений Powerbuilder )

Нужна скорость - десятки тысячи строк - за секунды
и точное соответсвие внешнего вида для любых
видов dw включая вложенные отчеты и графику.
...
Рейтинг: 0 / 0
Разработка конвертора данных Powersoft Report -> Excel
    #33437555
Andyn
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
А что, где-то появилось описание формата PSR?
...
Рейтинг: 0 / 0
Разработка конвертора данных Powersoft Report -> Excel
    #33437589
boogiman
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Боюсь, что за это мало кто возьмётся! Ибо задача достаточно объёмная и требующая огромных ресурсов, в том числе, хорошее знание VB.
...
Рейтинг: 0 / 0
Разработка конвертора данных Powersoft Report -> Excel
    #33437648
Фотография ЗоринАндрей
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
VB тут вообще никаким боком. тут скорее знание формата xls чтоб напрямую писать и то не факт что получится сделать лучше чем dw2xls.
ИМХО за это не возьмется никто ибо задача абсолютно нереальная.
...
Рейтинг: 0 / 0
Разработка конвертора данных Powersoft Report -> Excel
    #33437754
Локшин Марк
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ЗоринАндрейVB тут вообще никаким боком. тут скорее знание формата xls чтоб напрямую писать и то не факт что получится сделать лучше чем dw2xls.
ИМХО за это не возьмется никто ибо задача абсолютно нереальная.
Да получится, сделать быстрее и лучше - вполне реально. Но для всех типов отчетов + скорость + точное соответствие виду... (а в xls вообще можно применять "слои" в документе)?
Давайте прикинем... Мое мнение - один человекогод для такого проекта - весьма оптимистическая оценка. Программист с низкой квалификацией такую работу не сделает. Соответственно для Москвы 2000$ в месяц 25000$ за год. Если это не частное лицо, то минимум *2. Частное лицо, я думаю, тоже захочет какой-то коэффициент. Если не Москва, то все можно на 2 и поделить. Соответственно 25000-50000$ - оптимистические затраты на реализацию проекта. Я думаю, что на такие расходы никто просто так не пойдет с оплатой по факту.
...
Рейтинг: 0 / 0
Разработка конвертора данных Powersoft Report -> Excel
    #33437770
Локшин Марк
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
К тому же у вас противоречие в требованиях
AVGritsenkoОплата по факту при результатах лучше чем "dw2xls"
Возможен % от продаж заинтересованным клиентам ( а это
весь круг пользователей приложений Powerbuilder )
т.е. я покупаю исходники dw2xls, несколько правлю их, чтобы было лучше и уже вправе требовать с вас денег?
AVGritsenkoНужна скорость - десятки тысячи строк - за секунды
и точное соответсвие внешнего вида для любых
видов dw включая вложенные отчеты и графику.
а это уже совсем другие требования.
...
Рейтинг: 0 / 0
Разработка конвертора данных Powersoft Report -> Excel
    #33437782
ZhV
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
boogiman.... в том числе, хорошее знание VB.
Да... Это круче китайской грамоты - практически импосибл :-).

По сабжу есть некоторый опыт -имеется собственный вариант WYSIWYG для grid-а ,
Вот здесь я уже выступал как-то
/topic/114801&pg=1&hl=zhv#927237

1) в принципе VB не понадобился – просто нужно пользовать функции Excel-а через OLE , а их удобнее отлаживать и смотреть как работают с помощью известной методы работы с макросами ;
в проекте "dw2xls" сделано круче – напрямую работа с файлом Excel-я
Надеюсь автор этого проекта Anatoly Moskovsky не обидится за повторение его ссылки
http://www.sql.ru/forum/actualthread.aspx?tid=163701&hl=zhv#1360021

2) знание формат PSR … может и не нужно. В принципе можно считать , что это примерно равно
Describe(datawindow.Syntax) + Describe(datawindow.data) . Исключение – композитные и nested отчеты – там много хитрее и геморройнее
Важно - парсить синтакс – он достаточно нагляден.
Но выяснилась странная вещь – огромная "тормознутость" строковых функций PowerBuilder – типа POS, MID… С такой скоростью для сложных datawindow (от полусотни datawindow.objects) – 10000 вызовов POS – это до десяти секунд. Пришлось писать отдельную dll-ку под API-вызов на С++ для строковых функций. Оказалось , что VC++ с PB работат глючно. Потратил время – Vatcom C++ из PB пакета версии 6.5 – нормально – разница в скорости раз в сто. Что бы это значило ?

3) проблема для free формы – нужно заниматься топологией – привязки "свободных координат" к "решетке" ячеек Excel –а . ИМХО – из-за допускаемых для DW перекрытий - иногда просто невозможно точное соответствие

4) отдельная и страшно неудобная тема – композитные отчеты . Есть относительно простой вариант грузить на разные листы Excel-a , но это не всегда приемлимо . Иначе – нужно снова заниматься расчетом топологий размещения разноформатных отчетов в единой сетке листа

В общем заказчик "простил" мне композитные отчеты – я по жизни их "не люблю" :-)

Лично меня давно интересовал вопрос - почему subj не озадачилась сама Sybase ?
...
Рейтинг: 0 / 0
Разработка конвертора данных Powersoft Report -> Excel
    #33437813
Локшин Марк
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ZhV4) отдельная и страшно неудобная тема – композитные отчеты . Есть относительно простой вариант грузить на разные листы Excel-a , но это не всегда приемлимо . Иначе – нужно снова заниматься расчетом топологий размещения разноформатных отчетов в единой сетке листа
А Graph,N-Up,Rich Text еще делать. Graph-то тоже весьма и весьма не просто сделать... А всякие линии, овальчики прозрачности, один объект под другим. Брр...
ZhVDescribe(datawindow.Syntax) + Describe(datawindow.data)
Это с таким подходом все expression'ы нужно будет самому вычислять, можно несколько хитрее сделать, да и синтаксис, опять же не документирован + полноценный парсер тоже не так просто.
...
Рейтинг: 0 / 0
Разработка конвертора данных Powersoft Report -> Excel
    #33437916
ZhV
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Локшин МаркА Graph,N-Up,Rich Text еще делать. Graph-то тоже весьма и весьма не просто сделать... А всякие линии, овальчики прозрачности, один объект под другим. Брр....
Да забыл сказать - с графикой как таковой я вообще не занимался - не ставилась задача. В этой части - я пас. Могу предположить - что действительно - брр...

Локшин Марк
Это с таким подходом все expression'ы нужно будет самому вычислять, можно несколько хитрее сделать, да и синтаксис, опять же не документирован + полноценный парсер тоже не так просто.

Не знаю – кому как ... Два программиста – три алгоритма .
А в чем проблема сделать вот так ?

lds.dataobject = "file_name.psr"

И всё - можно отдельно извлекать синтакс и работать с данными. Выражения - как положено - через evaluate("col_name",row) . А как еще можно иначе ?

Что такое полноценный парсер ? Просто последовательно разлагаешь на лексемы строку

ls_synt = lds.Describe("datawindow.syntax")

Что надо и понятно – x,y,width, font.height,dddwname... - используешь или при необходимости модифицируешь . Что непонятно - html.valueishtml - просто не трогаешь и оставляешь как есть .
...
Рейтинг: 0 / 0
Разработка конвертора данных Powersoft Report -> Excel
    #33438157
Локшин Марк
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ZhVА в чем проблема сделать вот так ?

lds.dataobject = "file_name.psr"

И всё - можно отдельно извлекать синтакс и работать с данными. Выражения - как положено - через evaluate("col_name",row) . А как еще можно иначе ?
Есть способы несколько быстрее. А то для каждого свойства для каждой строки evaluete - это не быстро...

ZhVЧто такое полноценный парсер ? Просто последовательно разлагаешь на лексемы строку

ls_synt = lds.Describe("datawindow.syntax")
Ну вообще-то для однозначного разложения нужно полностью знать правила построения синтаксиса DataWindow (например БНФ). Там синтаксис сделан все таки не так, как в html - нашел тэг, знаешь - обрабатываешь, не знаешь - пропускаешь. Тут однозначно тег не так-то просто найти - а гарантировано - только зная полный синтаксис. До этих x,y и т.д. еще нужно добраться пропустив солидный кусок описания, а его нужно корректно пропустить, а не начать разбор с похожих конструкций внутри него. Можно все-же обойтись без такого рода проблем.
...
Рейтинг: 0 / 0
Разработка конвертора данных Powersoft Report -> Excel
    #33438236
zuzu
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
а зачем мучится делать такое теперь ?
ведь новая версия офиса будет на базе XML,
так что подождем ее и пусть все клиенты
переходят на новую версию офиса
...
Рейтинг: 0 / 0
Разработка конвертора данных Powersoft Report -> Excel
    #33438273
ZhV
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Локшин Марк ... Ну вообще-то для однозначного разложения нужно полностью знать правила построения синтаксиса DataWindow (например БНФ). Там синтаксис сделан все таки не так, как в html - нашел тэг, знаешь - обрабатываешь, не знаешь - пропускаешь.

/topic/114801&pg=2&hl=zhv#928715


автоцитата Парсится и переносится в обьект описателя datawindow строка вида
ls_syntax= dw.Describe("DataWindow.Syntax")

Хранить такую "строку" (до 80 кб) можно и в файле-шаблоне , и в базе данных … и не одну.
Она хорошо структурирована
[тип_обьекта]( [имя_параметра]=[значение или выражение]…..)

PB9 от PB6 отличается только номером в самом заголовке и наличием специальных [тип_обьекта] для выгрузку в xml и pdf. Но я такие режимы пока не ковырял - не было нужды.

Отдельно и специально - [для тип_обьекта] = table - это есть описатель datasource column .

Наверняка Sybase где-то спрятала аналогичный обьект где-то внутри private переменных - свойств datawindow . Может кто-то добрался или сможет это сделать ?
...
Рейтинг: 0 / 0
Разработка конвертора данных Powersoft Report -> Excel
    #33438422
Локшин Марк
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ZhV[тип_обьекта]( [имя_параметра]=[значение или выражение]…..)
Этого для однозначного разбора - мало. Такая последовательность может встретится еще до начала описания объектов отчета. Нужно знать полный синтаксис, иначе можно ошибиться при разборе, а синтаксис разный! Перевод строки в комментариях выглядит как ~r~n а в описании объекта обычным кодом перевода строки. А мало ли что там в PowerSoft'е понапридумывали. Они намудрить любят.
...
Рейтинг: 0 / 0
Разработка конвертора данных Powersoft Report -> Excel
    #33438491
ZhV
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Локшин Марк Этого для однозначного разбора - мало. Такая последовательность может встретится еще до начала описания объектов отчета. Нужно знать полный синтаксис, иначе можно ошибиться при разборе, а синтаксис разный! Перевод строки в комментариях выглядит как ~r~n а в описании объекта обычным кодом перевода строки. А мало ли что там в PowerSoft'е понапридумывали. Они намудрить любят.

Мне хватило… Вроде работает

[значение или выражение] - может быть :
1) число или идентификатор (по назначению обьекта) - лексическая единица до первого пробела или скобки
2) строчное выражение – обязательно начинается и заканчивается символом (” ) - «двойные кавычки» ASCII-код 0x22 ; если внутри выражения есть необходимость разместить этот же символ – PB по умолчанию ставит перед ним маркер и записывает в строку в виде (~”) – просто нужно игнорировать это сочетание символов при поиске конца строчного выражения. Перевод строки – просто включается в выражение , за пределами лексем - игнорируется.

Распарсенный описатель datawindow раскладывается в спец.обьект с более удобными для работы структурами . После необходимых обработок или модификаций – обратный процесс – сборка строки синтаксиса из структур обьекта . После выгребания кучи огрехов – достаточно стабильно работает без видимых проблем
...
Рейтинг: 0 / 0
Разработка конвертора данных Powersoft Report -> Excel
    #33438584
Локшин Марк
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
А каким образом найти хотя бы первое вхождение [тип_обьекта]?
...
Рейтинг: 0 / 0
Разработка конвертора данных Powersoft Report -> Excel
    #33438629
ZhV
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Локшин МаркА каким образом найти хотя бы первое вхождение [тип_обьекта]?

Проэкспортируйте и посмотрите в notepad синтаксис datawindow . Примерно так :

release 9;
datawindow(units=0 … )
header(height=136 color="536870912" )
. . . .
table(column=(type=decimal(0) update=yes updatewhereclause=yes key=yes name=is_name1 dbname="TABLE.IS_NAME1" )
. . . .
retrieve=" SELECT … "

text(band=header alignment="2" text="????" … )
. . . .
export.pdf(method=0 distill.custompostscript="0" xslfop.print="0" )


Итак первое вхождение – это всегда datawindow( …. )
Нужно выбрать и разложить всё что внутри скобок . После закрытия скобки – работа по данному обьекту закончена . Сканируем строку до следующиего обьекта – в данном случае " header" - всегда начинается с буквенного символа , символы перевода строк просто игнорирутся . Нужно учесть , что возможны вложенные описатели - главный и очень важный это table c вложенными column

Ну примерно … и так далее …
...
Рейтинг: 0 / 0
Разработка конвертора данных Powersoft Report -> Excel
    #33438669
Локшин Марк
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ZhVНу примерно … и так далее …
А если есть какие-либо секции, которые включаются в зависимости от условий или синтаксис внутри секций более хитрый? Не документировано, поэтому предположить можно все что угодно...
...
Рейтинг: 0 / 0
Разработка конвертора данных Powersoft Report -> Excel
    #33438780
ZhV
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Локшин Марк А если есть какие-либо секции, которые включаются в зависимости от условий или синтаксис внутри секций более хитрый? Не документировано, поэтому предположить можно все что угодно...

Что вы понимаете по словом " секция" ?
Простейшие datawidow – это freeform и grid - опция processing = 0 и 1 соответственно
Базовые обьекты это - table, header, detail, summary , footer – кажется всё .
При наличии группировок – header.N/trailer.N – шапка и подвал группы , где N – ее номер
Описатели визульных обьектов – column,compute и text . Есть еще для графики - но я их на память не помню , да и обработок над ними не делаю.

Для более экзотических типов datawindow – CrossTab,N-Up, Label – есть еще свои специфические обьекты – тоже редко приходится иметь дело , но в принципе ничего сильно выпадающего из общей логики .
Отдельно – nested и composite . Там в качестве обьекта появляется report - очень краткий описатель и ссылка на имя обьекта вложенного datawindow - и всё . Нужно искать тот обьект и парсить отдельно

Я не возьмусь утверждать точно – но каких либо условных операторов или конструкций в стиле макросов времени исполнения dw.Create(ls_synt) не попадалось
...
Рейтинг: 0 / 0
Разработка конвертора данных Powersoft Report -> Excel
    #33438843
Локшин Марк
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
авторЯ не возьмусь утверждать точно – но каких либо условных операторов или конструкций в стиле макросов времени исполнения dw.Create(ls_synt) не попадалось
Так вот, не попадалось и будет работать корректно для всех вариантов синтаксиса DataWindow - это, как говорится, две большие разницы.
...
Рейтинг: 0 / 0
Разработка конвертора данных Powersoft Report -> Excel
    #33438938
ZhV
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Локшин Марк Так вот, не попадалось и будет работать корректно для всех вариантов синтаксиса DataWindow - это, как говорится, две большие разницы.

Будем решать проблемы по мере поступления ТЗ и оплаты :-)

Я вообще-то не вижу жестокой необходимости в тотальном конверетере psr->xls

Таблицы - уже есть в продаже
Графики и диаграммы - лучше в pdf
rtf - в Word
...
Рейтинг: 0 / 0
Разработка конвертора данных Powersoft Report -> Excel
    #33439254
Локшин Марк
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ZhVЛично меня давно интересовал вопрос - почему subj не озадачилась сама Sybase ?
Кстати, вопрос интересный, и часть ответа, я думаю, можно найти в моих прикидках. Для США и Sybase это бы было, я думаю, раз в 5-10 дороже, даже с учетом китайского аутсорсинга.
ZhVГрафики и диаграммы - лучше в pdf
Дык в Excel'е то её больше хочется видеть, там тормально и поправить-перестроить то её потом можно будет.
...
Рейтинг: 0 / 0
Разработка конвертора данных Powersoft Report -> Excel
    #33439369
Фотография Anatoly Moskovsky
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ZhVв проекте "dw2xls" сделано круче – напрямую работа с файлом Excel-я
Надеюсь автор этого проекта Anatoly Moskovsky не обидится за повторение его ссылки
Я не обижусь, тем более что я не автор :))
А настоящий автор - Андрей Никулица.

ZhVЛично меня давно интересовал вопрос - почему subj не озадачилась сама Sybase ?
А кстати вот и нет, они давно озадачились и даже приняли решение не делать встроенный экспорт один в один в Excel. См. список фич в очереди на реализации у Сайбейса - эта фича с пометкой "не планируется в ближайшие 2 версии"
...
Рейтинг: 0 / 0
Разработка конвертора данных Powersoft Report -> Excel
    #33439374
Фотография Anatoly Moskovsky
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
AVGritsenkoРазработка конвертора данных Powersoft Report -> Excel

Предлагается разовая (для начала) работа

Необходимо разработать хороший конвертер данных dw PowerBuilder
или файлов Powersoft Report в Excel ( Word)

Кто возьмется?
Оплата по факту при результатах лучше чем "dw2xls"
Возможен % от продаж заинтересованным клиентам ( а это
весь круг пользователей приложений Powerbuilder )

Нужна скорость - десятки тысячи строк - за секунды
и точное соответсвие внешнего вида для любых
видов dw включая вложенные отчеты и графику.

Рекомендую подождать до 2006Q3 (или около того) и дождаться выхода DW2XLS с драйвером записи в Excel написанном на C++.
А еще ранее ожидается более полная поддержка композитных DW.

Правда насчет изображений - ничего не могу сказать.
...
Рейтинг: 0 / 0
Разработка конвертора данных Powersoft Report -> Excel
    #33439380
Фотография Anatoly Moskovsky
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Локшин Маркт.е. я покупаю исходники dw2xls, несколько правлю их, чтобы было лучше и уже вправе требовать с вас денег?
И тут же Desta будет вправе стребовать с кое-кого денег (даже фамилия известна)
...
Рейтинг: 0 / 0
Разработка конвертора данных Powersoft Report -> Excel
    #33439785
Локшин Марк
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Anatoly MoskovskyИ тут же Desta будет вправе стребовать с кое-кого денег (даже фамилия известна)
Ой, ну можно без исходных текстов распространять, или на C/Delphi переписть :)
Anatoly MoskovskyРекомендую подождать до 2006Q3 (или около того) и дождаться выхода DW2XLS с драйвером записи в Excel написанном на C++.
А что так долго? Там работы то не слишком много... особенно если один в один переписывать. Я вот таким же образом свой экспорт в HTML собираюсь переписать, но все пока только примеряюсь :)
...
Рейтинг: 0 / 0
25 сообщений из 49, страница 1 из 2
Форумы / PowerBuilder [игнор отключен] [закрыт для гостей] / Разработка конвертора данных Powersoft Report -> Excel
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]