powered by simpleCommunicator - 2.0.18     © 2024 Programmizd 02
Map
Форумы / PowerBuilder [игнор отключен] [закрыт для гостей] / Эксопрт DW в Excel, PB7 или 9
22 сообщений из 22, страница 1 из 1
Эксопрт DW в Excel, PB7 или 9
    #32938692
Vadim Romanenko
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Уважаемый Мировой Разум!!
Никто не пытался сделать универсальный алгоритм по выгрузке таблицы DW в Excel? Чтоб со всеми заголовками/границами/данными??
Может кто подскажет какой дельный совет?

ПС: С версией ПБ пока не определился - собираюсь переходить на 9 то ли ДО написания экспорта, то ли после :)
...
Рейтинг: 0 / 0
Эксопрт DW в Excel, PB7 или 9
    #32938704
Dim2000
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Как минимум, 1 попытка уже была :):

http://www.desta.com.ua , DW2XLS.
____________________________________
- Гарфилд, мышь!
- Спасибо, я сыт!
...
Рейтинг: 0 / 0
Эксопрт DW в Excel, PB7 или 9
    #32939381
Vadim Romanenko
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Чего-то не хочется связываться с еще какими-то фирмами... Мож кто-то все же пробовал сам написать такое? Или знает, где почитать?
...
Рейтинг: 0 / 0
Эксопрт DW в Excel, PB7 или 9
    #32939425
Dim2000
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Vadim RomanenkoЧего-то не хочется связываться с еще какими-то фирмами...
Там за $15 можно поиметь это дело в исходниках ;). Я, кстати, пробовал эту зверюшку под PB6.5, и она напрочь отказалась сохранять данные из вложенных отчётов, т.е. оказалась для меня совершенно бесполезной...

Мож кто-то все же пробовал сам написать такое?
Судя по отсутствию откликов, немногие этим занимаются .

Или знает, где почитать?
Help по PB не устроит?
...
Рейтинг: 0 / 0
Эксопрт DW в Excel, PB7 или 9
    #32939638
White Owl
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dim2000 Мож кто-то все же пробовал сам написать такое?
Судя по отсутствию откликов, немногие этим занимаются .
Занимаются, занимаются, просто не просматривают форум каждые пол часа :)

На самом деле там все довольно просто. Запускаешь Excel через OLE и перекидываешь данные ячейка за ячейкой. Примеров как это делать в сети не счесть. Просто берешь и напрямую переводишь с Delphi/C/Visual Basic/whatever на PowerScript. Никаких уникальных заморочек не помню, у меня оно заработало с первого раза.

Единственная сложность - сохранить визуальный формат данных в Excel чтобы он хоть отдаленно напоминал то как выглядит отчет в DW.
Есть три основных варианта как решать эту проблему:
1) На каждый отчет пишешь свой скрипт. Сто процентов надежно, но ооочень много работы.
2) Сочиняешь более-менее удобный метаязык описывающий процедуру конвертации данных DW->XLS. Вполне приличный метод, но надо много думать, и тоже много работы :)
3) Пытаешься при рисовании DW придерживаться каких-либо строгих правил а потом скрипт на основе унифицированных DW делает унифицированые XLS. Самый универсальный метод и требующий наименьших трудозатрат на поддержку, но требует внимательности при рисовании DW.
...
Рейтинг: 0 / 0
Эксопрт DW в Excel, PB7 или 9
    #32939794
Фотография Anatoly Moskovsky
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dim2000
Там за $15 можно поиметь это дело в исходниках ;). Я, кстати, пробовал эту зверюшку под PB6.5, и она напрочь отказалась сохранять данные из вложенных отчётов, т.е. оказалась для меня совершенно бесполезной...


Что касается dw2xls, то сейчас в работе поддержка вложенных отчетов, в т.ч. не только composite, но и в других типах DW.
Я рассчитываю через пару недель выпустить первый вариант dw2xls с такой поддержкой. Хотя тут сроки не гарантированные.

ЗЫ. В связи с этим, просьба ответить на опрос
...
Рейтинг: 0 / 0
Эксопрт DW в Excel, PB7 или 9
    #32939828
Локшин Марк
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Vadim RomanenkoЧего-то не хочется связываться с еще какими-то фирмами... Мож кто-то все же пробовал сам написать такое? Или знает, где почитать?
У меня на сайте можно посмотреть, там не в Excel, а в HTML, но есть много чего общего. Единственное, чтобы я там поменял, так это доставать объекты не через синтаксис DataWindow...
...
Рейтинг: 0 / 0
Эксопрт DW в Excel, PB7 или 9
    #32940272
Локшин Марк
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
White OwlЕсть три основных варианта как решать эту проблему:
Есть еще 4-й основной вариант :)
Делается в Excel файл-шаблон, в котором указывается какие строки к какому band'у относятся, и какие ячейки в этих строках каким объектам соответствуют. Далее, на основании такого шаблона строится (с использованием OLE) новый файл. Достоинство - есть визуальный редактор для таких шаблонов отчетов. Недостаток - не всякий отчет таким образом можно представить (динамически прячутся/двигаются объекты в DataWindow).
...
Рейтинг: 0 / 0
Эксопрт DW в Excel, PB7 или 9
    #32941037
Vadim Romanenko
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
White Owl
Единственная сложность - сохранить визуальный формат данных в Excel чтобы он хоть отдаленно напоминал то как выглядит отчет в DW.

Ну да! Это меня как раз и напрягает. На самом деле отчеты не сложные - достаточно типичны, обычная таблица. На картинке я нарисовал несколько типичных. Единественное место преткновения - это заголовки. Многоуровневые. И мне кажется, что проблема может быть только с объединением/выделением ячеек...

С утилиткой не хоцца возиться из-за ее денежности. Свои платить не хоцца (все-таки почти 30 баксов) а фирма... Тьху... Со счетами возни море... Пока оплатят... Легче самому ;)
...
Рейтинг: 0 / 0
Эксопрт DW в Excel, PB7 или 9
    #32941056
Vadim Romanenko
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
White OwlЗапускаешь Excel через OLE и перекидываешь данные ячейка за ячейкой.

Вот тут кстати тоже тот еще вопрос!! Я вот недавно убедился, что этот метод ну оооочень неэффективный, если отчет мало-мальски большой... Скажем значений на 1000. Очень долго получаецца перекидывать по ОЛЕ по одному значению. Можно как-то через буфер, целиком всю таблицу скидывать... Но я пока не пробовал, как это сделать - пока сказать не могу...
...
Рейтинг: 0 / 0
Эксопрт DW в Excel, PB7 или 9
    #32941165
Dim2000
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Vadim RomanenkoВот тут кстати тоже тот еще вопрос!! Я вот недавно убедился, что этот метод ну оооочень неэффективный, если отчет мало-мальски большой... Скажем значений на 1000. Очень долго получаецца перекидывать по ОЛЕ по одному значению. Можно как-то через буфер, целиком всю таблицу скидывать... Но я пока не пробовал, как это сделать - пока сказать не могу...
1. Напихиваешь свои данные в строку, между полями - Tab (Char(09)), между строками - кажись, Char(13)+Char(10).
2. Копируешь в Clipboard в своей программе.
3. Вставляешь из Clipboard в Excel.
...
Рейтинг: 0 / 0
Эксопрт DW в Excel, PB7 или 9
    #32941171
zuzu
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
так сделай через тхт файл (таб делимитер),
а потом только раскраску сделай в хлс
по крйней мере у нас так и очень быстро работает
...
Рейтинг: 0 / 0
Эксопрт DW в Excel, PB7 или 9
    #32941313
Фотография Anatoly Moskovsky
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Vadim Romanenko White OwlЗапускаешь Excel через OLE и перекидываешь данные ячейка за ячейкой.

Вот тут кстати тоже тот еще вопрос!! Я вот недавно убедился, что этот метод ну оооочень неэффективный, если отчет мало-мальски большой... Скажем значений на 1000. Очень долго получаецца перекидывать по ОЛЕ по одному значению. Можно как-то через буфер, целиком всю таблицу скидывать... Но я пока не пробовал, как это сделать - пока сказать не могу...

Формируешь HTML в строковой переменной, а потом:
Код: plaintext
1.
2.
Clipboard(ls_html)
ole_sheet.Range('A1').Select
ole_sheet.Paste

Таблица 4 колонки, 2500 строк - Paste занимает 0.9 сек / P4 2800
...
Рейтинг: 0 / 0
Эксопрт DW в Excel, PB7 или 9
    #32942635
Guest_2
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
После того как однажды Excel не смог корректно отобразить HTML файл созданный PB, я отказался от использования этого формата файлов для экспорта.

Перегонять данные через OLE действительно медленно.
Экспорт через saveAs(...) - не проходит, так как теряются все computed fields'ы.

Поэтому использую совершенно замечательную (на мой взгляд) функцию saveAsAscii(...), которая создает текстовый файл, но при этом сохраняет и как сomputed Fields так и заголовки dataWindow.
Поэтому я:
- сохраняю данные в текстовом файле, созданным через SaveAsAscii(...)
---- Через OLE открываю Excel
----- Загружаю созданный файл
----- Провожу необходимое форматирование, как говорится "дорабатываю напильником".
...
Рейтинг: 0 / 0
Эксопрт DW в Excel, PB7 или 9
    #32943117
ZhV
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
"Smart" datawindow
автоцитатаTo Winnie-the-Pooh

У меня сделано только для GRID-dw - остальное пока не очень востребовано.
Очень подробно не получится. Идея примерно в следующем

1) на основе обьекта распарсенных данных datawindow (многие из которых никаким Describe() не получить) анализируется конфигурация column - как datasource так и колонки визуализации ( в т.ч. computed и text)
2) создается копия обьекта , в которой порядок column datasource приводятся в соответствие c их визуальным расположением
3) для визуальных столбцов типа dddw , dddlb , codetable - производится замещение типа - на строчный
4) для computed визуальных столбцов - создается соответствующий псевдо datasource-column - строчный (char(1000))
5) производится операция реконструкции синтаксиса по новому обьекту и datastore.Create(…)
6) производится поэлементное копирование (с учетом типов) из datawindow-оригинала в datastore
для datasource column , которые не модифицировались по (3) и (4)
7) аналогичное копирование для модифицированных псевдостолбцов из (3) - lookupdisplay(….) ,
для новых (4) - String(evaluate(….))
- скорость копированиея до 1000 ячеек в секунду - раз в 100 быстрее чем копирование через ole , но все же для больших таблиц и для удобства запускается progressbar
8) datastore.saveas(filetmp,Excel!)
9) через ole вытаскивается filetmp - который содержит все данные но не содержит форматов;
- форматируются сразу по столбцам - шрифты, рамки, цвета, выравнивание …
10) создается 2-й лист Excel-а , в который выводятся данные и форматируются по распарсенным данным из подвала , группировок и шапки - заполняются они в этом листе и по мере выполнения - копируются на первый лист начиная от конца к началу , чтобы не портить нумерацию строк ;
11) сервисный sheet и ненужные (visible=0) колонки удаляются и Saveas в нужное место - можно по запросу в диалоге

Я думаю , примерно также сделано у парней из www.desta.com.ua - обратите внимание , что у них есть специальное упоминание о progressbar и обработке dddw, ddlb… У меня даже вызов очень похож
// Функция экспорта в Excel любого GRID DATAWINDOW
// uf_dw_to_excel(datawindow adw_for_export, string as_file_name,string as_rep_name)
...
Также я думаю , что без большой нужды лучше не париться - по ходу очень много скрытых и тонких граблей - лучше купить у этих парней готовое .
Удачи.
...
Рейтинг: 0 / 0
Эксопрт DW в Excel, PB7 или 9
    #32943244
Фотография Anatoly Moskovsky
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ZhV"Smart" datawindow
автоцитата
Я думаю , примерно также сделано у парней из www.desta.com.ua - обратите внимание , что у них есть специальное упоминание о progressbar и обработке dddw, ddlb… У меня даже вызов очень похож


Да, примерно так же, кроме того, что копирование происходит не во временное DS, а непосредственно в файл Excel, безо всяких SaveAs или OLE
...
Рейтинг: 0 / 0
Эксопрт DW в Excel, PB7 или 9
    #32943490
ZhV
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Anatoly Moskovsky
Да, примерно так же, кроме того, что копирование происходит не во временное DS, а непосредственно в файл Excel, безо всяких SaveAs или OLE

Ну SaveAs не сильно напрягает - работает очень быстро...

А так - где брали инфу по формату файлов Excel-я ? Если не секрет и не копирайт конечно ...
...
Рейтинг: 0 / 0
Эксопрт DW в Excel, PB7 или 9
    #32943602
Vadim Romanenko
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Попробовал только что SaveAs... Совсем он не желает сохранять заголовки DW!! Полное отсутствие WYSIWYG.. Исключительно имена колонок и содержимое строк DW без форматирования...
...
Рейтинг: 0 / 0
Эксопрт DW в Excel, PB7 или 9
    #32943697
Фотография PL99
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Vadim RomanenkoПопробовал только что SaveAs... Совсем он не желает сохранять заголовки DW!! Полное отсутствие WYSIWYG.. Исключительно имена колонок и содержимое строк DW без форматирования...Хм...
saveAsAscii
...
Рейтинг: 0 / 0
Эксопрт DW в Excel, PB7 или 9
    #32943724
Фотография Anatoly Moskovsky
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ZhVА так - где брали инфу по формату файлов Excel-я ? Если не секрет и не копирайт конечно ...

Конечно не секрет, это общедоступная информация:
http://sc.openoffice.org/excelfileformat.pdf
...
Рейтинг: 0 / 0
Эксопрт DW в Excel, PB7 или 9
    #32944364
ZhV
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Anatoly Moskovsky
Конечно не секрет, это общедоступная информация:
http://sc.openoffice.org/excelfileformat.pdf
Сэнкс.
Хотя инфа очень не простая для "переваривания"...

Да и для меня она сейчас не очень актуальна. Там по ссылке в "smart datawindow" я уже писал - главным point-ом моего проекта было динамичекое управление datawindow для создания "генератора отчетов". Excel - как то сбоку получился . Между прочим - много идей "позаимствовал" из 1С и оценил , как недешево стоят некоторые их приколы.
Еще раз между прочим - именно такими гибкими возможностями PowerBuilder меня и впечатлил .


Vadim RomanenkoПопробовал только что SaveAs... Совсем он не желает сохранять заголовки DW!! Полное отсутствие WYSIWYG.. Исключительно имена колонок и содержимое строк DW без форматирования...
Естественно - так и должно быть. В моем посте # 1359027 SaveAs идет 8-м пунктом , и после него еще нужно .

Совершенно серьезно - дешевле будет купить .
...
Рейтинг: 0 / 0
Эксопрт DW в Excel, PB7 или 9
    #32944377
Vadim Romanenko
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ZhV
Совершенно серьезно - дешевле будет купить .

да вот я сам только что попробовал - и облизнулся... Легко, как бы играючи, любое DW переводим в Excel :) Единственное что - графиков встроенных не поддерживает...
...
Рейтинг: 0 / 0
22 сообщений из 22, страница 1 из 1
Форумы / PowerBuilder [игнор отключен] [закрыт для гостей] / Эксопрт DW в Excel, PB7 или 9
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали тему (1): Анонимы (1)
Читали форум (1): Анонимы (1)
Пользователи онлайн (6): Анонимы (4), Bing Bot, Yandex Bot 4 мин.
x
x
Закрыть


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