Подтвердить что ты не робот

Почему моя кросс-таблица отключена в Excel?

Я пытаюсь создать таблицу Excel с использованием BIRT. Электронная таблица представляет собой кросс-таблицу, отображающую два объекта вместе. Количество строк и столбцов динамически зависит от значений в базе данных MySQL. В настоящее время у меня есть рабочая реализация отчета для вывода PDF. Теперь я пытаюсь создать вторую версию отчета для Excel.

Я скопировал дизайн отчета и начал настраивать его для работы с Excel. Все выглядит хорошо, но после заголовка отображаются только первые три столбца. Все строки отображаются правильно.

Я пробовал следующее:

  • Я попытался настроить Overflow to Visible на каждый элемент на странице. Это не имело никакого эффекта.
  • Я попытался установить высоту и ширину главной страницы до смехотворно больших значений. Вся информация отображается правильно, но я надеюсь на решение без жестко закодированных значений. В будущем ширина данных может снова превысить мое произвольное значение и будет отключена.

Я ограничен следующими способами:

  • Я не могу переключать механизмы отчетности (я должен использовать BIRT).
  • Я не могу переключать эмиттеры Excel.

В этой записи в блоге упоминается моя проблема: http://www.spudsoft.co.uk/2011/10/the-spudsoft-birt-excel-emitters/ но он не предлагает решение, отличное от переключателя эмиттера. Конкретная цитата: "У файлов также есть проблемы с макетом страницы, с которыми я не мог работать (в частности, большие отчеты будут отключены).

Помимо одной записи в блоге мой googlefu меня не подвел. Любая помощь приветствуется! Спасибо!

4b9b3361

Ответ 1

Здесь есть два вопроса. Первый из них относительно прост, второй комплекс.

1. Почему моя кросс-вкладка отключена в Excel?

2. Как мне динамически регулировать ширину главной страницы в зависимости от количества столбцов в отчете во время выполнения?

A1: вкладка "Крест" отключается, потому что ширины столбцов были установлены вручную, где количество столбцов будет расширяться за пределы установленной ширины главной страницы. Каждый раз, когда вы захватываете элемент дизайна отчета и настраиваете его, BIRT предполагает, что вы знаете, что делаете, и не переопределяете настройки.

Решение состоит в том, чтобы воссоздать элемент отчета (Таблица или Перекрестная вкладка), а не вручную изменять размеры. При запуске в HTML или Excel все столбцы будут автоматически установлены для отображения в доступной ширине главной страницы.

Снимок экрана BIRT 4.2 Cross Tab, Report Item с шириной главной страницы 2 дюйма и 30 столбцами

Two Inch by 30 Columns

A2: Это непросто, и я не буду давать ответ в это время. Я укажу на решение и определю пару дорожных блоков. Правильное решение этого вопроса должно включать в себя функциональное решение с использованием базы данных Sample.

(с BIRT 4.2.1)

Вызов1 - Ширина главной страницы устанавливается BIRT Report Scripting в событиях до завершения отчета. Вы не можете просто подсчитать количество столбцов в отчете;

Если вы хотите подсчитать, столбцы -

Дизайн отчетов intialize

 columnCount = 0;

Перекрестная вкладка, onCreate

 columnCount ++;

В моем исследовании предлагается два пути для подсчета столбцов перед созданием элемента "Перекрестная вкладка". Либо

  • Запустите набор данных в файле beforeFactory (это означает два запроса к базе данных, один для подсчета и один для отчета), затем получите счетчик и используйте его.

  • Рассчитайте значение в своем внутреннем запросе и заготовьте его в наборе данных onFetch.

Я следовал за параметром Data Set, onFetch, используя вычисляемый столбец, но не работал.

Вызов2 - свойство ширины главной страницы должно быть установлено до или перед дизайном отчета доRender. Наиболее часто рекомендуется использовать beforeFactory. Кроме того, свойство Ширина главной страницы доступно только в том случае, если для главной страницы "Тип" установлено значение "Пользовательский", в моих попытках я устанавливаю это вручную в редакторе свойств Общие.

Передача значений из onFetch в beforeFactory должна выполняться с использованием PersistentGlobalVariable, которая может передавать только строки, а не целые числа. Я нашел все возможное, чтобы это не работало. Даже прохождение "12in" в PersistentGlobalVariable не удалось настроить главную страницу Width

Любой из этих кодов в beforeFactory будет регулировать ширину главной страницы (когда Type = Custom)

Передайте значение

reportContext.getReportRunnable().designHandle.getDesignHandle().findMasterPage("Simple MasterPage").setProperty("width","12in");

Вычислить значение и передать его

increaseWidth = 20;
reportContext.getReportRunnable().designHandle.getDesignHandle().findMasterPage( "Simple MasterPage").setProperty("width",((2+increaseWidth)+"in"));

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