Как добавить VB Excel Script в Excel, сгенерированный отчет Jasper? - PullRequest
4 голосов
/ 05 сентября 2011

Текущий отчет Excel создается с использованием Jasper Server / Jasper Report 3.8.

В моем случае я хотел бы создать Pivot Excel автоматически с использованием Excel (поскольку перекрестная таблица отчетов Jasper недостаточна для моих требований клиента), поэтому у меня есть идея добавить скрипт VB, который будет создавать сводную таблицу при создании отчета Jasper открывается впервые.

Я создал сценарий VBA. Однако я не смог найти способ интеграции VBA с отчетом Jasper (сгенерированным), чтобы при создании отчета VBA также включался в отчет.

Может кто-нибудь сказать мне, как добавить VB Excel Script в Excel Generated Jasper Report?

Добавлено ограничение:

  • Элемент списка

Источник данных (файл Excel, содержащий данные) защищен

Ответы [ 3 ]

2 голосов
/ 07 сентября 2011

Я знаю, что на вопрос был дан ответ и принят, но я просто не могу удержаться, чтобы добавить мысль .....

Может ли быть так, что этот вопрос просит поставить телегу впереди лошади??

Вы создаете REP файла Excel с помощью генератора отчетов.Затем вы хотите использовать эти данные в качестве источника сводной таблицы Excel.На мой взгляд, для этого есть несколько возможностей:

  • Создать еще один PIV-файл Excel, содержащий структуру REP с некоторыми примерами данных, для создания определений Pivot
  • Copy /Вставляйте данные REP, заменяя существующий контент, каждый раз, когда вы рисуете новый REP
  • , обновляете сводку

Это можно автоматизировать в PIV, запрашивая имя исходного файла и т. Д., Поэтомуна самом деле нет необходимости прикасаться к REP.В качестве альтернативы копированию / вставке вы можете просто использовать внешнюю ссылку на REP, когда вы указываете источник данных для сводной таблицы, и изменять его каждый раз, когда пользователь хочет проанализировать новый REP.

Надеюсь, это поможет

1 голос
/ 07 сентября 2011

Я думаю, что MikeD имеет правильную идею здесь. Я никогда не использовал Jasper, но если это файл CSV или Excel, почему бы не записать блок в свой макрос-скрипт, который открывает отчет Jasper, создает сводную таблицу и сохраняет ее снова.

Честно говоря, прошло много лет с тех пор, как я работал с VBA, но этот код был тем, что я нашел в Интернете для открытия рабочих книг (ссылка: http://p2p.wrox.com/excel-vba/10510-opening-excel-file-vba.html)

 Dim oExcel as Excel.Application
 Dim oWB as Workbook
 Set oExcel = new Excel.Application
 Set oWB = oExcel.Workbooks.Open(<pathToWorkbookHere>)

Простите за синтаксис этого, так как это из 10-летних воспоминаний, но оттуда вы можете делать такие вещи, как

 oWB.Sheets(1).Cells.Copy
 ThisWorkBook.Sheets("PIVOTDATA").Cells.Paste() 
 ThisWorkBook.Sheets("PIVOTTABLE").Cells.Refresh
 ThisWorkBook.Saveas("<path to new report>", xlExcel12)

Если ваши отчеты составлены по дате, вы можете программно выбрать либо самую последнюю версию, загрузить папку и проанализировать все из них, либо что хотите. Ваш файл шаблона - это тот, на котором выполняется скрипт, и он сохраняет свои копии в состоянии «не содержит макрос», поэтому ваши пользователи никогда не получат предупреждение безопасности.

Если вы правильно определили имя файла программно, установите код для запуска «ON OPEN» в макросе шаблона и выполните thisworkbook.close в конце скрипта, все, что вам нужно сделать, это создать пакетный файл который автоматически открывает вашу рабочую книгу в командной строке

excel.exe <template_filename>

затем установите задание cron для Windows (называемое запланированной задачей) для автоматического запуска каждый день, сразу после запуска вашего отчета jasper.

Извините, если что-то из этого "попало" с точки зрения синтаксиса. Я больше 10 лет не был в Excel VBA, но я написал такую ​​систему в то время, когда каждый день генерировались сотни прекрасно отформатированных отчетов Excel ... сводные таблицы и все такое.

Это вполне достижимо, и вы на правильном пути.

0 голосов
/ 06 сентября 2011

Просматривая ответ на Jasper Tracker, кажется, что эта функция не поддерживается отчетом jasper и не будет включена в новую функцию

this (Добавление сценария VBA в Excel, сгенерированный отчет Jasper) - это такая особенная функция Excel, что я уверен, что мы это сделаем никогда не реализовать. Это в основном потому, что JasperReports не является XLS создание библиотеки, а точнее инструмент отчетности с выходом Excel Возможности

Подробнее см. ссылку .

...