Форум » Clipper » Report from Clipper to Excel » Ответить

Report from Clipper to Excel

les: Есть Clipper-ный отчёт с упрощенной (для внутреннего употребления) шапкой, который Clipper автоматом перегоняет в Excel. Но налоговая хочет еметь его с очень навороченной шапкой ( http://webfile.ru/533208 ). На скорую руку склепал генерацию .html файла в стиле Excel. Работает, но прога внутри выглядит жутко, да и неудобно это клепать. Вопрос: как к этой шапке по-эллегантнее подгрузить данные из отчёта ( путём генерации из Clipper-а какого-либо скрипта и его запуска ).

Ответов - 44, стр: 1 2 3 All

_sergey: 1. можно написать в excel'е на VBA скрипт (функцию), которая загрузит данные из dbf и расставит их в нужные клетки страницы листа экселя.. или можно этот же скрипт написать vb-script (*.vbs): открыть лист, открыть dbf-таблицу, и в цикле по таблице отобрать нужные записи.. единственная проблема -- в VBA (jet ole db) криво работают индексы (я пример выложил в webfile.ru/533312) 2. можно изпользовать мою халявную прогу rec3p.exe: в программе на клиппере далаешь отчёт в текстовый файл с использованием псевдографики, табуляции, всяких межстрочных интервалов и узких шрифтов -- и вызываешь rec3p с именем файла твоего отчёта. правда, в этом случае отчёт будет распечатан, а не сохранён в эксель..

les: _sergey пишет: цитатаможно этот же скрипт написать vb-script (*.vbs): открыть лист, открыть dbf-таблицу, и в цикле по таблице отобрать нужные записи.. Спасибо за примеры. Это то что мне и надо. Если не влом - подскажи, где взять нормальное описание объекта "Excel.Application". Просмотрел кучу док - все мура. Т.к. это офтопик - давай в мыло les@azovmash.com или ICQ (149-152-548).

_sergey: самое простое -- запускаешь word или excel, жмёшь alt+F11 (редактор VBA), ctrl+r, enter, пишешь название объекта, жмёшь F1. если помощь для VBA установлена (выбирается при установке офиса), то откроется то, что надо. можно ещё в MSDN опискать, или на сайте microsoft.com в разделе MSDN (должен быт такой)


les: _sergey пишет: цитатасамое простое -- запускаешь word или excel, жмёшь alt+F11 (редактор VBA), ctrl+r, enter, пишешь название объекта, жмёшь F1. Спасибо. Я ведь спрашивал про НОРМАЛЬНОЕ описание. Вопрос решен. Никому не советую идти путем *.vbs. Clipper это делает примерно в 50 раз быстрее.

_sergey: там (в справке VBA в excel) "родное" описание, чего такого в нём ненормального? цитатаВопрос решен. Никому не советую идти путем *.vbs. Clipper это делает примерно в 50 раз быстрее. VBA (да и вообще OLE) вставляет ячейки в страницу excel'я действительно медленно, хотя есть разные способы для ускорения, например, отключить прорисовку листа.. Интересно, как ты из прогарммы на клиппере создаёшь лист эекселя? я знаю только о создания файлов excel'я формата BIF, обычной записью бинарный данных в файл (хоть из клиппера, хотя пример я видел на паскале), но ведь тебе les пишет: цитатаНо налоговая хочет еметь его с очень навороченной шапкой так что, кроме как открыть лист через OLE (или DDE, или прямой доступ к формату BIF) и изменять его содержимое -- что-то не вижу можно ещё так поступить! заполнить буфер обмена данными (разделитель между элементами в одной строке -- табуляция, разделитель между строками -- перевод строки (chr(13)+chr(10)) ), а затем вставить всё это в нужную ячейку.. данные "правильно" распределятся по ячейкам листа! (только что пробовал). так что можно на VBA, например, считать файл, выгруженный предварительно clipper'ом, скопировать его в буфер обмена, а потом вставить в лист.

les: _sergey пишет: цитатаИнтересно, как ты из прогарммы на клиппере создаёшь лист эекселя? нарисовал шапку руками, довавил строку с данными, отформатировал, сохранил в формате *.html, из Clipper-а по образу и подобию дописываю нужные данные и открываю в Excel. Геморойно, но работает довольно шустро.

_sergey: здорово, html-файлы сохраняют форматирование! правда, на office-97 не всё форматирование восстановилось при excel xp->html->excel (а именно, границы и раскраска фона ячеек) всякими *.csv и *.txt такого не добиться! (сохранения форматирования)

Vlad04: Почему не в Харборе отчет? Харбор прекрасно работает с Excel.Основная программа на Клиппере, а некоторые отчеты делаю в небольшой проге на Харбор.К сожалению консольный Харбор Клиппер еще не догнал, поэтому полностью на Харбор не перехожу.

SergeJa: Упомянут именно Харбор? или более продвинутый xХарбор?

_sergey: 2 Vlad04: если требуется работать в winapi или ole, то (мне) проще писать программу на с(c++) + winapi или на дельфи или на VBA.. всё равно код harbour транслируется на c++

les: Vlad04 пишет: цитатаХарбор прекрасно работает с Excel Сам-то проверял? У меня в harbour на P4 2GHz через oExcel := TOleAuto():New( "Excel.Application" ) и т.д. отчет 14 столбцов х 1200 строк грузится в Excel около 2х минут - Clipper-e секуд 5. _sergey пишет: цитатаVBA (да и вообще OLE) вставляет ячейки в страницу excel'я действительно медленно согласен на все 100

Vlad04: Сам все проверял. Имеется ввиду xХарбор.Для выгрузки больших отчетов использую библиотеку XlsRep.dll. Она упоминалась здесь на форумах.

_sergey: 2 Vlad04: а можно посмотреть на эту xlsrep.dll? и есть ли исходники? а то интересно! там файл с отчётом заново создаётся (например, в формате BIF, что меня и интересует), или дописывается в существующий, например, в шаблон? (что с использованием только формата BIF не получится) формат BIF тем удобен, что excel его понимает, он задокументирован, а создавать его можно как обычный двоичный DOS-файл (а не OLE-хранилице, как в случае с обычным xls-файлом)

Vlad04: Исходников нет.Автор: nik_x@hotbox.ru - обратись к нему.Он писал , что библиотека получила дальнейшее развитие. Так же можешь посмотреть сайт Водоносова : http://vodonosov.nm.ru/develop/develop.htm. Там есть так же программка для прямого доступа к файлам Excel в Клиппере . Для Харбор ее надо немного подправить.

Dima: Кстати использую исходники Водоносова , скорость супер.......ну это и понятно если исходник глянуть.

les: Dima пишет: цитатаКстати использую исходники Водоносова , скорость супер....... Я некоторое время использовал этот метод - спасибо Водоносову. Потом отказался - совершенно нет форматирования отчета :(

deep: les пишет: цитатанарисовал шапку руками, довавил строку с данными, отформатировал, сохранил в формате *.html, из Clipper-а по образу и подобию дописываю нужные данные и открываю в Excel. а нужные данные дописываешь в какой кодировке? В виндовой, каким образом?

les: deep пишет: цитатаа нужные данные дописываешь в какой кодировке? В виндовой, каким образом? Конечно в cp1251, используя OemToAnsi()

deep: А в какой библиотеке эта функция? В поставке клиппер 5.01 она есть?

les: deep пишет: цитатаА в какой библиотеке эта функция? В поставке клиппер 5.01 она есть? В Clipper-е её нет. Но есть много самописных вариантов



полная версия страницы