Advanced Excelでファイル操作(1)使い方

Forgeコンポーネント「Advanced Excel」の導入手順です。

OutSystemsのActionから、Excelファイルの作成・読み込み・編集ができます。

標準のExcel機能は。決まったフォーマットのファイルだけですが、このコンポーネントは、ロジックを組んで自由に操作できます。

動作確認環境

Platform Version:11.0.212.0

Service Studio Version:11.5.42

Advanced Excel:2.1.23

Advanced Excel

Excelファイルの読み込み・出力、書式設定、グラフ作成などもできるツールです。

この記事を書いている時点では、頻繁にアップデートされています。

APIの使い方は、ForgeのDocumentationタブに記載があります(英語ですが)。

Forgeのページ

セットアップ

インストール

Service Studioを起動します。

Browse Forgeで「Advanced Excel」で検索。Browse Forgeは、画面最上部タブの、一番左をクリックで開きます。

Advanced Excelを選択。右側の「INSTAL…」ボタンでインストールしてください。

テスト用モジュールへの参照追加

動作確認するモジュールを開きます。

Manage Dependenciesダイアログを開きます。ショートカットキーCTRL+Qです。

Advanced Excel全要素のチェックを入れて「APPLY」ボタンをクリック。

これで準備ができました。

テストプログラム

簡単なテストプログラムで動作確認してみます。

Inputの入力を、2行目・2列目の位置に書き込んだファイルをDLさせる画面です。

画面作成

今回はScreen Template不要です。

UI Flowを選択してCTRL+NでEmptyのテンプレートで画面を作ります。

(もちろん、Add Web ScreenのメニューからEmptyを選択して作っても同じです)

できた画面に、以下のようにInputとButtonだけ配置しました。

Screen Action

ダウンロードしたときのScreen Actionを作ります。

用語については、下の参考情報を参照してください。

各Actionとそのパラメータの説明:

  1. Workbook_Create:メモリ上でExcelファイルを作成する。パラメータ指定は無し
  2. WorkBook_AddSheet:作成したExcelファイルにシートを追加
    1. Workbook:Workbook_CreateのOutput Parameterを指定
    2. WorksheetName:シート名。何でもいいがここでは”Demo”を指定
    3. Worksheet:ブックに追加したいWorksheetオブジェクトを指定。ただしブランクにする場合は、NullObject()。
  3. Worksheet_Select:4でセルを追加するシートのオブジェクトを取得
    1. Workbook:Workbook_CreateのOutput Parameter
    2. WorksheetName:シート名。上で追加しておいた”Demo”
  4. Cell_Write:指定の位置へ指定の値を書き込む
    1. CellRow:行番号(ex: 2)
    2. CellColumn:列番号(ex: 2)
    3. CellValue:値。この画面では、Input Widgetに紐付けた変数を設定
  5. Workbook_GetBinaryData:ダウンロード用にBinaryData型でExcelファイルデータを取得する
  6. Workbook_Close:Createで作成したExcelファイルをメモリから解放する。ドキュメントにより、解放するように指示されています
  7. Download:OutSystems標準のダウンロード機能。File Contentは↑で取得したBinary Dataを指定してください

実行例:

参考情報

用語

Excelファイルを扱うC#やJavaScriptのライブラリでよく見るのと同じですね。

  • Workbook:Excelファイル自体(ブック)を表す
  • Worksheet:ブック内の各シートを表す

行位置・列位置は1起点

Closeは必須

ドキュメントでは、Excelファイルの操作が終わったら、Workbookを確実にリリースしてメモリを解放するようにと書いてあります。

OutSystemsではTry-Finallyに相当する仕組みがないです。そのため、Advanced Excelを利用するロジックをUser Actionに切り出す方法がいいかもしれません。Action内でException Handlerで全例外を拾って、そこでもCloseするようにする。

なお、Close済みのWorkbookを更にCloseしてみたところエラーはでませんでした。ただ、安全だという記述が見つからなかったので、念のため避けておこうかと。

シェアする

  • このエントリーをはてなブックマークに追加

フォローする