作成したアプリケーションは以下のように動作します。
今回作成したサンプルのエクスポートを以下に置きました。
https://github.com/ujnak/apexapps/blob/master/exports/preview-excel-with-danfo-js-and-grid-js.zip
空のAPEXアプリケーションにデフォルトで作成されるホーム・ページに、すべての機能を実装しています。
ページ・プロパティのJavaScriptのファイルURLに以下を記述します。Danfo.jsとGrid.jsのライブラリをページにロードしています。
https://cdn.jsdelivr.net/npm/danfojs/lib/bundle.min.js
https://cdn.jsdelivr.net/npm/gridjs/dist/gridjs.production.min.js
ファンクションおよびグローバル変数の宣言に以下を記述します。変数elemは、Excelの内容をプレビューするリージョンを保持します。
var elem;
ページ・ロード時に実行に以下を記述します。プレビューは静的コンテンツのリージョン(に子ノードを作成して)にプレビューしますが、その要素をelemに取得します。Grid.jsによるグリッド上でページ送りをする際にページ番号をクリックしますが、そのときにページの送信が行われないように、イベントのデフォルトの動作をキャンセルしています。
elem = document.getElementById("grid");
// Grid.jsでページングする際にページの送信を行わない。
elem.addEventListener('click', function(event) {
event.preventDefault();
});
Grid.jsが必要とするCSS設定ファイルを、CSSのファイルURLに設定します。
https://cdn.jsdelivr.net/npm/gridjs/dist/theme/mermaid.min.css
ページ・プロパティへの設定は以上です。
プレビューするExcelファイルを選択するページ・アイテムをP1_EXCELとして作成します。タイプはファイルのアップロードです。このサンプル・アプリケーションでは、選択したファイルをサーバーにアップロードすることはありません。
サーバーに送信する場合は、ストレージのタイプやファイルをパージするタイミングなどを適切に設定します。
ボタン名はPREVIEW、動作のアクションは動的アクションで定義を選択します。
ボタンPREVIEWをクリックしたときに、以下のJavaScriptのコードを実行します。
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
const file = document.getElementById("P1_EXCEL").files[0]; | |
dfd.readExcel(file).then((df) => { | |
// remove if preview element is exist. | |
if (elem.firstChild) { | |
elem.removeChild(elem.firstChild); | |
}; | |
// create new preview element. | |
const preview = document.createElement("div"); | |
const grid = new gridjs.Grid({ | |
columns: df.$columns, | |
data: df.$data, | |
pagination: { | |
enabled: true, | |
limit: 4 | |
} | |
}).render(preview); | |
elem.appendChild(preview); | |
}); |
以上でアプリケーションは完成です。アプリケーションを実行すると、記事の先頭のGIF動画のように動作します。
今回の記事は以上です。
Oracle APEXのアプリケーション作成の参考になれば幸いです。
完