|
Эксопрт DW в Excel, PB7 или 9
|
|||
---|---|---|---|
#18+
Уважаемый Мировой Разум!! Никто не пытался сделать универсальный алгоритм по выгрузке таблицы DW в Excel? Чтоб со всеми заголовками/границами/данными?? Может кто подскажет какой дельный совет? ПС: С версией ПБ пока не определился - собираюсь переходить на 9 то ли ДО написания экспорта, то ли после :) ... |
|||
:
Нравится:
Не нравится:
|
|||
01.03.2005, 14:05 |
|
Эксопрт DW в Excel, PB7 или 9
|
|||
---|---|---|---|
#18+
Как минимум, 1 попытка уже была :): http://www.desta.com.ua , DW2XLS. ____________________________________ - Гарфилд, мышь! - Спасибо, я сыт! ... |
|||
:
Нравится:
Не нравится:
|
|||
01.03.2005, 14:08 |
|
Эксопрт DW в Excel, PB7 или 9
|
|||
---|---|---|---|
#18+
Чего-то не хочется связываться с еще какими-то фирмами... Мож кто-то все же пробовал сам написать такое? Или знает, где почитать? ... |
|||
:
Нравится:
Не нравится:
|
|||
01.03.2005, 17:09 |
|
Эксопрт DW в Excel, PB7 или 9
|
|||
---|---|---|---|
#18+
Vadim RomanenkoЧего-то не хочется связываться с еще какими-то фирмами... Там за $15 можно поиметь это дело в исходниках ;). Я, кстати, пробовал эту зверюшку под PB6.5, и она напрочь отказалась сохранять данные из вложенных отчётов, т.е. оказалась для меня совершенно бесполезной... Мож кто-то все же пробовал сам написать такое? Судя по отсутствию откликов, немногие этим занимаются . Или знает, где почитать? Help по PB не устроит? ... |
|||
:
Нравится:
Не нравится:
|
|||
01.03.2005, 17:22 |
|
Эксопрт DW в Excel, PB7 или 9
|
|||
---|---|---|---|
#18+
Dim2000 Мож кто-то все же пробовал сам написать такое? Судя по отсутствию откликов, немногие этим занимаются . Занимаются, занимаются, просто не просматривают форум каждые пол часа :) На самом деле там все довольно просто. Запускаешь Excel через OLE и перекидываешь данные ячейка за ячейкой. Примеров как это делать в сети не счесть. Просто берешь и напрямую переводишь с Delphi/C/Visual Basic/whatever на PowerScript. Никаких уникальных заморочек не помню, у меня оно заработало с первого раза. Единственная сложность - сохранить визуальный формат данных в Excel чтобы он хоть отдаленно напоминал то как выглядит отчет в DW. Есть три основных варианта как решать эту проблему: 1) На каждый отчет пишешь свой скрипт. Сто процентов надежно, но ооочень много работы. 2) Сочиняешь более-менее удобный метаязык описывающий процедуру конвертации данных DW->XLS. Вполне приличный метод, но надо много думать, и тоже много работы :) 3) Пытаешься при рисовании DW придерживаться каких-либо строгих правил а потом скрипт на основе унифицированных DW делает унифицированые XLS. Самый универсальный метод и требующий наименьших трудозатрат на поддержку, но требует внимательности при рисовании DW. ... |
|||
:
Нравится:
Не нравится:
|
|||
01.03.2005, 18:25 |
|
Эксопрт DW в Excel, PB7 или 9
|
|||
---|---|---|---|
#18+
Dim2000 Там за $15 можно поиметь это дело в исходниках ;). Я, кстати, пробовал эту зверюшку под PB6.5, и она напрочь отказалась сохранять данные из вложенных отчётов, т.е. оказалась для меня совершенно бесполезной... Что касается dw2xls, то сейчас в работе поддержка вложенных отчетов, в т.ч. не только composite, но и в других типах DW. Я рассчитываю через пару недель выпустить первый вариант dw2xls с такой поддержкой. Хотя тут сроки не гарантированные. ЗЫ. В связи с этим, просьба ответить на опрос ... |
|||
:
Нравится:
Не нравится:
|
|||
01.03.2005, 19:50 |
|
Эксопрт DW в Excel, PB7 или 9
|
|||
---|---|---|---|
#18+
Vadim RomanenkoЧего-то не хочется связываться с еще какими-то фирмами... Мож кто-то все же пробовал сам написать такое? Или знает, где почитать? У меня на сайте можно посмотреть, там не в Excel, а в HTML, но есть много чего общего. Единственное, чтобы я там поменял, так это доставать объекты не через синтаксис DataWindow... ... |
|||
:
Нравится:
Не нравится:
|
|||
01.03.2005, 20:24 |
|
Эксопрт DW в Excel, PB7 или 9
|
|||
---|---|---|---|
#18+
White OwlЕсть три основных варианта как решать эту проблему: Есть еще 4-й основной вариант :) Делается в Excel файл-шаблон, в котором указывается какие строки к какому band'у относятся, и какие ячейки в этих строках каким объектам соответствуют. Далее, на основании такого шаблона строится (с использованием OLE) новый файл. Достоинство - есть визуальный редактор для таких шаблонов отчетов. Недостаток - не всякий отчет таким образом можно представить (динамически прячутся/двигаются объекты в DataWindow). ... |
|||
:
Нравится:
Не нравится:
|
|||
02.03.2005, 10:01 |
|
Эксопрт DW в Excel, PB7 или 9
|
|||
---|---|---|---|
#18+
White Owl Единственная сложность - сохранить визуальный формат данных в Excel чтобы он хоть отдаленно напоминал то как выглядит отчет в DW. Ну да! Это меня как раз и напрягает. На самом деле отчеты не сложные - достаточно типичны, обычная таблица. На картинке я нарисовал несколько типичных. Единественное место преткновения - это заголовки. Многоуровневые. И мне кажется, что проблема может быть только с объединением/выделением ячеек... С утилиткой не хоцца возиться из-за ее денежности. Свои платить не хоцца (все-таки почти 30 баксов) а фирма... Тьху... Со счетами возни море... Пока оплатят... Легче самому ;) ... |
|||
:
Нравится:
Не нравится:
|
|||
02.03.2005, 13:37 |
|
Эксопрт DW в Excel, PB7 или 9
|
|||
---|---|---|---|
#18+
White OwlЗапускаешь Excel через OLE и перекидываешь данные ячейка за ячейкой. Вот тут кстати тоже тот еще вопрос!! Я вот недавно убедился, что этот метод ну оооочень неэффективный, если отчет мало-мальски большой... Скажем значений на 1000. Очень долго получаецца перекидывать по ОЛЕ по одному значению. Можно как-то через буфер, целиком всю таблицу скидывать... Но я пока не пробовал, как это сделать - пока сказать не могу... ... |
|||
:
Нравится:
Не нравится:
|
|||
02.03.2005, 13:41 |
|
Эксопрт DW в Excel, PB7 или 9
|
|||
---|---|---|---|
#18+
Vadim RomanenkoВот тут кстати тоже тот еще вопрос!! Я вот недавно убедился, что этот метод ну оооочень неэффективный, если отчет мало-мальски большой... Скажем значений на 1000. Очень долго получаецца перекидывать по ОЛЕ по одному значению. Можно как-то через буфер, целиком всю таблицу скидывать... Но я пока не пробовал, как это сделать - пока сказать не могу... 1. Напихиваешь свои данные в строку, между полями - Tab (Char(09)), между строками - кажись, Char(13)+Char(10). 2. Копируешь в Clipboard в своей программе. 3. Вставляешь из Clipboard в Excel. ... |
|||
:
Нравится:
Не нравится:
|
|||
02.03.2005, 14:06 |
|
Эксопрт DW в Excel, PB7 или 9
|
|||
---|---|---|---|
#18+
так сделай через тхт файл (таб делимитер), а потом только раскраску сделай в хлс по крйней мере у нас так и очень быстро работает ... |
|||
:
Нравится:
Не нравится:
|
|||
02.03.2005, 14:07 |
|
Эксопрт DW в Excel, PB7 или 9
|
|||
---|---|---|---|
#18+
Vadim Romanenko White OwlЗапускаешь Excel через OLE и перекидываешь данные ячейка за ячейкой. Вот тут кстати тоже тот еще вопрос!! Я вот недавно убедился, что этот метод ну оооочень неэффективный, если отчет мало-мальски большой... Скажем значений на 1000. Очень долго получаецца перекидывать по ОЛЕ по одному значению. Можно как-то через буфер, целиком всю таблицу скидывать... Но я пока не пробовал, как это сделать - пока сказать не могу... Формируешь HTML в строковой переменной, а потом: Код: plaintext 1. 2.
Таблица 4 колонки, 2500 строк - Paste занимает 0.9 сек / P4 2800 ... |
|||
:
Нравится:
Не нравится:
|
|||
02.03.2005, 14:41 |
|
Эксопрт DW в Excel, PB7 или 9
|
|||
---|---|---|---|
#18+
После того как однажды Excel не смог корректно отобразить HTML файл созданный PB, я отказался от использования этого формата файлов для экспорта. Перегонять данные через OLE действительно медленно. Экспорт через saveAs(...) - не проходит, так как теряются все computed fields'ы. Поэтому использую совершенно замечательную (на мой взгляд) функцию saveAsAscii(...), которая создает текстовый файл, но при этом сохраняет и как сomputed Fields так и заголовки dataWindow. Поэтому я: - сохраняю данные в текстовом файле, созданным через SaveAsAscii(...) ---- Через OLE открываю Excel ----- Загружаю созданный файл ----- Провожу необходимое форматирование, как говорится "дорабатываю напильником". ... |
|||
:
Нравится:
Не нравится:
|
|||
03.03.2005, 06:17 |
|
Эксопрт DW в Excel, PB7 или 9
|
|||
---|---|---|---|
#18+
"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) ... Также я думаю , что без большой нужды лучше не париться - по ходу очень много скрытых и тонких граблей - лучше купить у этих парней готовое . Удачи. ... |
|||
:
Нравится:
Не нравится:
|
|||
03.03.2005, 11:11 |
|
Эксопрт DW в Excel, PB7 или 9
|
|||
---|---|---|---|
#18+
ZhV"Smart" datawindow автоцитата Я думаю , примерно также сделано у парней из www.desta.com.ua - обратите внимание , что у них есть специальное упоминание о progressbar и обработке dddw, ddlb… У меня даже вызов очень похож Да, примерно так же, кроме того, что копирование происходит не во временное DS, а непосредственно в файл Excel, безо всяких SaveAs или OLE ... |
|||
:
Нравится:
Не нравится:
|
|||
03.03.2005, 11:48 |
|
Эксопрт DW в Excel, PB7 или 9
|
|||
---|---|---|---|
#18+
Anatoly Moskovsky Да, примерно так же, кроме того, что копирование происходит не во временное DS, а непосредственно в файл Excel, безо всяких SaveAs или OLE Ну SaveAs не сильно напрягает - работает очень быстро... А так - где брали инфу по формату файлов Excel-я ? Если не секрет и не копирайт конечно ... ... |
|||
:
Нравится:
Не нравится:
|
|||
03.03.2005, 13:08 |
|
Эксопрт DW в Excel, PB7 или 9
|
|||
---|---|---|---|
#18+
Попробовал только что SaveAs... Совсем он не желает сохранять заголовки DW!! Полное отсутствие WYSIWYG.. Исключительно имена колонок и содержимое строк DW без форматирования... ... |
|||
:
Нравится:
Не нравится:
|
|||
03.03.2005, 13:40 |
|
Эксопрт DW в Excel, PB7 или 9
|
|||
---|---|---|---|
#18+
Vadim RomanenkoПопробовал только что SaveAs... Совсем он не желает сохранять заголовки DW!! Полное отсутствие WYSIWYG.. Исключительно имена колонок и содержимое строк DW без форматирования...Хм... saveAsAscii ... |
|||
:
Нравится:
Не нравится:
|
|||
03.03.2005, 14:08 |
|
Эксопрт DW в Excel, PB7 или 9
|
|||
---|---|---|---|
#18+
ZhVА так - где брали инфу по формату файлов Excel-я ? Если не секрет и не копирайт конечно ... Конечно не секрет, это общедоступная информация: http://sc.openoffice.org/excelfileformat.pdf ... |
|||
:
Нравится:
Не нравится:
|
|||
03.03.2005, 14:15 |
|
Эксопрт DW в Excel, PB7 или 9
|
|||
---|---|---|---|
#18+
Anatoly Moskovsky Конечно не секрет, это общедоступная информация: http://sc.openoffice.org/excelfileformat.pdf Сэнкс. Хотя инфа очень не простая для "переваривания"... Да и для меня она сейчас не очень актуальна. Там по ссылке в "smart datawindow" я уже писал - главным point-ом моего проекта было динамичекое управление datawindow для создания "генератора отчетов". Excel - как то сбоку получился . Между прочим - много идей "позаимствовал" из 1С и оценил , как недешево стоят некоторые их приколы. Еще раз между прочим - именно такими гибкими возможностями PowerBuilder меня и впечатлил . Vadim RomanenkoПопробовал только что SaveAs... Совсем он не желает сохранять заголовки DW!! Полное отсутствие WYSIWYG.. Исключительно имена колонок и содержимое строк DW без форматирования... Естественно - так и должно быть. В моем посте # 1359027 SaveAs идет 8-м пунктом , и после него еще нужно . Совершенно серьезно - дешевле будет купить . ... |
|||
:
Нравится:
Не нравится:
|
|||
03.03.2005, 16:44 |
|
Эксопрт DW в Excel, PB7 или 9
|
|||
---|---|---|---|
#18+
ZhV Совершенно серьезно - дешевле будет купить . да вот я сам только что попробовал - и облизнулся... Легко, как бы играючи, любое DW переводим в Excel :) Единственное что - графиков встроенных не поддерживает... ... |
|||
:
Нравится:
Не нравится:
|
|||
03.03.2005, 16:48 |
|
|
Start [/forum/topic.php?fid=15&tid=1338502&gotonew=1]: |
0ms |
get settings: |
1ms |
get forum list: |
6ms |
check forum access: |
2ms |
check topic access: |
2ms |
track hit: |
24ms |
get topic data: |
8ms |
get first new msg: |
3ms |
get forum data: |
1ms |
get page messages: |
19ms |
update_topic_read_status (1338502): 03.03.2005 16:48:24: |
0ms |
get tp. blocked users: |
0ms |
get online users: |
16ms |
check new: |
1ms |
others: | 77ms |
total: | 160ms |
0 / 0 |