[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をインストールします。

  1. SQL Workshopに移動して、ユーティリティをクリックします。
  2. サンプル・データセットをクリックします。
  3. EMP / DEPTをインストールします。
  4. 言語は日本語を選択します。
  5. Nextをクリックします。
  6. Install Datasetをクリックします。
  7. Create Applicationをクリックします。
  8. アプリケーションに以下のページを追加します。
    1. クラシック・レポート
    2. インタラクティブグリッド
    3. インタラクティブレポート
    4. ファセット検索
  9. アプリケーションの作成をクリックします。

アプリケーションのカスタマイズ


新しい機能強化を見直すために、アプリケーションの各ページをカスタマイズしてみましょう。
内蔵のPDFとExcelのダウンロード

このレポートに新しいビルトインExcelダウンロードを追加するには、クラシックレポートのカスタマイズを開始します。以下の手順に従ってください。

  1. クラシックレポートリージョンに移動
  2. 属性に移動し、レポート印刷を有効にします。
  3. 印刷領域に移動します。
  4. フォーマットで、PDF を選択します。
  5. 変更を適用します。

アプリケーションを実行すると、レポートの下部に印刷オプションが表示されます。


そのオプションをクリックすると、アプリケーションはPDF形式の従業員レポートをダウンロードします。



フォーマット属性をExcelに変更するだけで、ユーザーは同じレポートをExcel形式でダウンロードすることができますが、フォーマットはDerived from Item属性を使用して動的に設定できることに注意してください。



前の例は、プレーンなレポートでした。以下のスクリーンショットのように、ハイライト、コントロールブレーク、集約された列などの書式設定を追加してレポートを印刷する方法を学びたい場合は、読み進めてください。



インタラクティブ レポートとインタラクティブ グリッドをエクスポートする新しい方法を探ってみましょう。



ユーザーは3つのオプションを選択できます。

  • レポート形式。利用可能なオプションは、CSV、HTML、Excel、およびPDFです。
  • データのみ。ユーザーは、プレーンなレポートをダウンロードするか、APEXアプリケーションで定義された形式のレポートをダウンロードするかを選択できます。
  • 電子メールで送信。レポートを電子メールで送信することができます。

ユーザーがExcelでレポートをダウンロードすると、一部のセルが凍結される可能性があります。この例では、列(行)と合計(列)の見出しが凍結されているため、ユーザーがシートの残りの部分を表示するために下方向または上方向にスクロールしても、最初の列および/または最上行が画面上に残ります。



プログラムおよびカスタマイズ可能なレポート


新しいAPIを実装することで、ページにレポートリージョンがない場合でも、複数の形式のレポートをプログラム的に生成することができます。
次のサンプルでは、データをエクスポートするために、Faceted Searchページのレポート印刷を有効にするかもしれません
(Faceted SearchにはClassic Report Regionが含まれていることを覚えておいてください)。
その代わりに、以下の手順に従って、カスタムレポートのダウンロードボタンを実装する方法を探ってみましょう。

  1. Faceted Searchページに移動します。
  2. ユーザーが好みのレポート形式を選択できるように、選択リスト項目を作成します。
    私の場合、項目はP3_FORMATと呼ばれています。 以下の静的な値を含めます。
  3. レポートをダウンロードするボタンを作成します。
  4. Faceted Search に移動し、static ID には faceted_search と入力します。
  5. ユーザーがダウンロードボタンをクリックしたときに、フォーマット項目(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;

そして、生成されたレポートは以下の通りです。



まとめ

レポート印刷のための新しい機能強化は、レポートに多くのオプションを提供し、あなたとあなたのユーザーの両方が大いに恩恵を受けることができます。

コメント

このブログの人気の投稿

Oracle Database 19cサポート・タイムラインの重要な更新 (2024/11/20)

Oracle APEXのInteractive Gridで、Oracle Formsと比較して、重複行の検証を制御/通過させる方法 (2022/07/21)

Oracle APEX 24.1の一般提供の発表 (2024/06/17)