ここに2つの質問があります。最初のものは比較的簡単で、2番目のものは複雑です。
1.私のクロスタブはExcelで切り取られていますか?
2.実行時にレポートの列数に基づいてマスターページの幅を動的に調整する方法を教えてください。
A1:列幅が手動で設定されているため、列数がマスターページの設定幅を超えて拡大されるため、クロスタブが切断されています。レポートデザイン要素を取得して調整するたびに、BIRTは自分が何をしているかを知っているとみなし、自分の設定を上書きしません。
解決策は、レポート要素([表]または[クロスタブ])を再作成し、手動でサイズを調整しないことです。 HTMLまたはExcelで実行すると、すべての列が使用可能なマスターページ幅で表示されるように自動的に設定されます。 BIRT 4.2クロスタブ、2インチのマスターページの幅と30列
A2を使用したレポートアイテムの
スクリーンショット:これは容易ではない、と私が答えを提供することはありません今回。解決策を指摘し、いくつかの道路ブロックを特定します。この質問に対する有効な解決策には、サンプルデータベースを使用した機能ソリューションを含める必要があります。
(BIRT 4.2.1のよう)
Challenge1 - マスターページ幅は、表またはクロスタブ項目が完了して報告する前にイベントにBIRT Report Scriptingを設定されています。レポート内の列の数を単純に数えることはできません。
あなたは、列をカウントしたい場合 - レポートデザインは、私の研究では
columnCount = 0;
クロスタブ、のonCreate
columnCount ++;
をintialize
2つのパスがあります前に列をカウントするための提案クロスタブ項目を作成します。どちらの
ランbeforeFactoryに設定されているデータ数を取得し、それを使用し、その後、(これはカウントし、レポートのための1つのためにデータ・ベース、一から二のクエリを意味します)。
インラインクエリの値を計算し、データセットonFetchで収穫します。
計算列を使用してデータセット、onFetchオプションに従いましたが、機能しませんでした。
Challenge2 - マスタページの幅プロパティは、レポートデザインbeforeRenderまたはその前に設定する必要があります。 beforeFactoryが最も頻繁に推奨されています。さらに、マスタページの幅プロパティは、マスターページの「タイプ」が「カスタム」に設定されている場合にのみ使用できます。これは、プロパティエディタで手動で設定します。一般。
渡すonFetchからbeforeFactoryへの値は、整数ではなく文字列を渡すことができるPersistentGlobalVariableを使用して行う必要があります。私はこれがうまくいかないためのあらゆる種類の方法を見つけました。でもPersistentGlobalVariableに「12インチ」を渡すことによって、(タイプ=カスタムの場合)
はバリュー
reportContext.getReportRunnable().designHandle.getDesignHandle().findMasterPage("Simple MasterPage").setProperty("width","12in");
を渡しbeforeFactoryにおけるこれらのコードのどちらかが、マスターページの幅を調整しますマスターページ幅
を調整することができませんでした値を計算し、私は見つけるか、マスターページWを調整機能レポートを作成することができなかった最終的にはそれを
increaseWidth = 20;
reportContext.getReportRunnable().designHandle.getDesignHandle().findMasterPage("Simple MasterPage").setProperty("width",((2+increaseWidth)+"in"));
を渡しますレポート実行時に生成された数値列に渡される幅。私は可能だと思いますが、そうすることは私の現在のスキルを超えています。
BIRTの出力のどこかにサンプルファイルをアップロードし、Excelでどのように表示し、どのように見たいのかを確認して、何かを処理することをお勧めします。個人的/機密データを避け、閲覧/ダウンロードリンクを投稿する – Apostolos55
残念ながら、私はこの質問をしたときに私が働いていた会社にいなくなりました。私がそうだったら私は間違いなくそれをするだろう。私はそうではないので、私はもはや問題を引き起こしていたコードにアクセスすることはできません。 私は、任意に大きな幅の "ソリューション"を使い終わったと思います。私は本当に満足していませんでしたが、それは当時十分に機能していました。 – radicaledward101
この質問は閉じなければなりません。一般に、BIRTは、ボックスのエミュレータを使用していても、すべての列をExcelにエクスポートします。これは、レポートが問題解決に利用できない特定の問題に関する1つの質問です。したがって、この質問に対する可能な答えはありません。 –