|
22.07.2003, 09:53 | #1 |
Участник
|
Экспорт отчета в Excel
Добрый день.
Есть такая задача: Есть обычный аксаптовский отчет. Отчет не очень простой - много чего делается программно. Есть желание данные, которые получаютcя в результате, отправить в Exсel - ну, чтоб не просто напечатать, а еще чего-нить с ними делать можно было. Расскажите пожалуйста, нет ли какого-нибудь более-менее стандартного / общепризнанного решения этой проблемы? Вообще, основная проблема, как мне видится, заключается в том, как после получения отчета поиметь доступ к его данным. Если это можно сделать, то отправить данные в Excel используя ComExсelDocument довольно просто. Возможно ли это? Или я для выполнения этой задачи должен фактически написать новый класс, который будет получать данные также, как это делает исходный отчет? Этого очень не хочется. Поделитесь мыслями на этот счет. |
|
10.02.2006, 11:49 | #2 |
Участник
|
У меня вопрос по етой же теме. Я создал наследника класса ReportOutputUser и перегрузил все методи так как надо. Вопрос в том как его теперь подклучить к общей логике. Я столкнулся с такойже проблемой. Как это можно обойти? Ко всему прочему в классе ClassFactory.createViewer тоже хотелось бы что-то сделать а не исполйзовать case ReportOutputUserType:: Default: как было приведено в доке для класса ReportOutputUser. Я имею ввиду например case ReportOutputUserType::XLS. Microsoft позакривал все енумы и классы вокруг этой рутини. Наверняка кто-то делал что-то подобное раньше. Поделитесь секретом как ето можно обойти?
С уважением Анатолий |
|
10.02.2006, 16:24 | #3 |
Участник
|
Сам задал вопрос и сам отвечу. Посидел подумал и придумал: HTML использует очень похожие теги как и MS Excel. Тоесть достаточно изменить концовку фаила на .xls и добавить пару значений в используемые емуны и макроси и рапорти со свистом сохраняются в Excel. Если кому интересно могу пояснить как сделал.
С Уважением Анатолий |
|
10.02.2006, 17:14 | #4 |
Moderator
|
В "Правилах форума AXForum" в пункте 2.8 есть такой стринг:
"Ни у кого нет желания вытягивать из Вас эти сведения клещами." Мораль: если Вам самому хочется - расскажите, остальные буду Вам только благодарны, пусть даже и молчаливо. Зайти в ветку и увидеть блок конкретных действий без необходимости делать еще один шаг - запрос автору, всегда удобнее, чем ловить автора, спустя, например, 2-3 года. Подумайте о благодарных потомках... |
|
10.02.2006, 18:07 | #5 |
Участник
|
Рецепт следующий:
1) добавить формат .xls в макрос "File" 2) добавить элемент XLS в энум SysPrintFileType 3) добавить соответствующий уже существующему код в SysPrintForm.findFileNameType() 4) в SysPrintForm.changeFormat() добавить: PHP код:
Всем удачного пользования. С уважением Анатолий |
|
|
За это сообщение автора поблагодарили: Gustav (1). |
13.02.2006, 16:13 | #6 |
Участник
|
Вариант с HTML файлом катит слабо.
В Excel между данными появляются пустые столбцы и Axapta выводит шапку страницы не только на первой странице, но и на всех последующих, т.е. в Excel появляются ненужные строчки и данные никуда не скопируешь. В свое время была задача по реализации вывода любого отчета в Excel, которая и выродилась в создание утилиты. Главная идея вывода, что все данные в отчете выводятся строго по столбцам без прерываний, все остальные элементы подгоняются под них. Технически - создается класс, наследник от reportOutputUser, которые предлагался как viewer при печати, на нем перекрываете большинство методов writeString, writeEnum и т.д. и т.п. Таким образом по завершении работа этого класса у вас есть все элементы и их координаты. Дальше уже ваша фантазия - надо их как-то отобразить на ячейки Excel Описание того, что получилось прилагаю, если есть вопросы по приобретению, то к селзам в Колумбус, утилита продается, если какие-то технические вопросы, то задавайте здесь |
|