[OracleAPEX]APEX 20.2でのレポート印刷の探求 (2020/10/23)
APEX 20.2でのレポート印刷の探求 (2020/10/23)
https://blogs.oracle.com/apex/exploring-report-printing-in-apex-202
投稿者:Monica Godoy | Principal Product Manager
APEX 20.1には、インタラクティブグリッドでサポートされたPDF印刷など、レポート印刷のための重要な新しい機能強化が含まれています。
APEX 20.2では、APEX開発チームはさらに多くの機能を追加しており、現在、apex.oracle.comでテストすることができます。
もしくは、 apex.oracle.com/otn/ からダウンロードできます。
新しい機能強化は以下の通りです。
- インタラクティブ レポート、インタラクティブ グリッド、およびクラシック レポートのビルトイン PDF 印刷と Excel ダウンロード。
リージョン属性で、PDF と Excel を追加ダウンロード形式として有効にしてください。ユーザーは、ダウンロード ダイアログでページの向きとサイズを変更できます。 - インタラクティブ レポート - 電子メールを送信。すべてのダウンロード形式を添付できるようになりました。
- BI Publisher との統合が強化されました。
- 新しい APEX_REGION.EXPORT_DATA および APEX_DATA_EXPORT API を使用して、PDF、CSV、Excel、HTML、JSON、XML ファイルをプログラムで生成できます。
- 組み込みのPDFは、中国語、日本語、韓国語をサポートするようになりました。
それらを探るために、日本語のEMP / DEPT Sample Datasetを利用してみます。
ということで、まずはSample Datasetをインストールします。
- SQL Workshopに移動して、ユーティリティをクリックします。
- サンプル・データセットをクリックします。
- EMP / DEPTをインストールします。
- 言語は日本語を選択します。
- Nextをクリックします。
- Install Datasetをクリックします。
- Create Applicationをクリックします。
- アプリケーションに以下のページを追加します。
- クラシック・レポート
- インタラクティブグリッド
- インタラクティブレポート
- ファセット検索
- アプリケーションの作成をクリックします。
アプリケーションのカスタマイズ
新しい機能強化を見直すために、アプリケーションの各ページをカスタマイズしてみましょう。
内蔵のPDFとExcelのダウンロード
このレポートに新しいビルトインExcelダウンロードを追加するには、クラシックレポートのカスタマイズを開始します。以下の手順に従ってください。
- クラシックレポートリージョンに移動
- 属性に移動し、レポート印刷を有効にします。
- 印刷領域に移動します。
- フォーマットで、PDF を選択します。
- 変更を適用します。
アプリケーションを実行すると、レポートの下部に印刷オプションが表示されます。
そのオプションをクリックすると、アプリケーションはPDF形式の従業員レポートをダウンロードします。
フォーマット属性をExcelに変更するだけで、ユーザーは同じレポートをExcel形式でダウンロードすることができますが、フォーマットはDerived from Item属性を使用して動的に設定できることに注意してください。
前の例は、プレーンなレポートでした。以下のスクリーンショットのように、ハイライト、コントロールブレーク、集約された列などの書式設定を追加してレポートを印刷する方法を学びたい場合は、読み進めてください。
インタラクティブ レポートとインタラクティブ グリッドをエクスポートする新しい方法を探ってみましょう。
ユーザーは3つのオプションを選択できます。
- レポート形式。利用可能なオプションは、CSV、HTML、Excel、およびPDFです。
- データのみ。ユーザーは、プレーンなレポートをダウンロードするか、APEXアプリケーションで定義された形式のレポートをダウンロードするかを選択できます。
- 電子メールで送信。レポートを電子メールで送信することができます。
ユーザーがExcelでレポートをダウンロードすると、一部のセルが凍結される可能性があります。この例では、列(行)と合計(列)の見出しが凍結されているため、ユーザーがシートの残りの部分を表示するために下方向または上方向にスクロールしても、最初の列および/または最上行が画面上に残ります。
プログラムおよびカスタマイズ可能なレポート
新しいAPIを実装することで、ページにレポートリージョンがない場合でも、複数の形式のレポートをプログラム的に生成することができます。
次のサンプルでは、データをエクスポートするために、Faceted Searchページのレポート印刷を有効にするかもしれません
(Faceted SearchにはClassic Report Regionが含まれていることを覚えておいてください)。
その代わりに、以下の手順に従って、カスタムレポートのダウンロードボタンを実装する方法を探ってみましょう。
- Faceted Searchページに移動します。
- ユーザーが好みのレポート形式を選択できるように、選択リスト項目を作成します。
私の場合、項目はP3_FORMATと呼ばれています。 以下の静的な値を含めます。 - レポートをダウンロードするボタンを作成します。
- Faceted Search に移動し、static ID には faceted_search と入力します。
- ユーザーがダウンロードボタンをクリックしたときに、フォーマット項目(P3_FORMAT)がNULLでない場合に、以下のコードを実行するBefore Headerプロセスを作成します。
このプロセスは、指定した地域にあるSQLクエリに応じて情報をエクスポートします。
注:番号ページに応じて項目名を入れ替えてください。
declare l_export apex_data_export.t_export; l_region_id number; begin select region_id into l_region_id from apex_application_page_regions where application_id = :APP_ID and page_id = :APP_PAGE_ID and static_id = 'faceted_search'; l_export := apex_region.export_data ( p_format => :P3_FORMAT, p_page_id => :APP_PAGE_ID, p_region_id => l_region_id); apex_data_export.download( l_export ); end; |
6. 変更を適用する。
ユーザーは必要なフォーマットのレポートを選択することで、簡単にレポートをダウンロードすることができます。
ページにSQLクエリがない場合は、独自のSQLコードを定義して、
列グループ、ハイライト、集約、その他の追加印刷設定など、さまざまな形式のレポートを作成することができます。
このタイプのレポートを生成するには、Faceted Searchページのプロセス・コードを定義する以下のコードに変更します。
- レポートのSQLクエリ
- 行ハイライトの設定と条件
- ヘッダー、フッター、ボーダーテーブルの印刷設定
declare l_highlights apex_data_export.t_highlights; l_context apex_exec.t_context; l_export apex_data_export.t_export; l_print_config apex_data_export.t_print_config; begin apex_data_export.add_highlight( p_highlights => l_highlights, p_id => 1, p_value_column => 'HIGHLIGHT1', p_display_column => null, p_text_color => '#FFFF', p_background_color => '#F5B642'); l_context := apex_exec.open_query_context( p_location => apex_exec.c_location_local_db, p_sql_query => 'select ename as "Name - 従業員名", job as "Job - ジョブ", MGR as "Manager - マネージャー" , Hiredate as "Hiredate - 採用日", sal as "Salary - 給与", case when sal >= 3000 then 1 end as HIGHLIGHT1, Comm as "Commision - コミッション" from emp' ); l_print_config := apex_data_export.get_print_config( p_body_font_color => '#4B4540', p_page_header => 'Header - ヘッダー', p_page_header_font_color => '#4B4540', p_page_header_font_size => 14, p_page_header_font_weight => apex_data_export.c_font_weight_bold, p_page_footer => 'Footer - フッター', p_page_footer_font_color => '#4B4540', p_page_footer_font_size => 14, p_page_footer_font_weight => apex_data_export.c_font_weight_bold, p_border_width => 1, p_border_color => '#4B4540'); l_export := apex_data_export.export ( p_context => l_context, p_format => :P3_FORMAT, p_print_config => l_print_config, p_highlights => l_highlights ); apex_exec.close( l_context ); apex_data_export.download( p_export => l_export ); exception when others then apex_exec.close( l_context ); raise; end; |
そして、生成されたレポートは以下の通りです。
まとめ
レポート印刷のための新しい機能強化は、レポートに多くのオプションを提供し、あなたとあなたのユーザーの両方が大いに恩恵を受けることができます。
コメント
コメントを投稿