【Qs】GeneXusでのテキストファイル出力の方法サムネイル画像

GeneXusでのテキストファイル出力の方法

株式会社Q’sfix

はじめに

こんにちは🌷
GeneXus開発者の平間と陶です👩👨
今回のブログでは、テキスト出力の方法について解説します。
環境:GeneXus18、WorkWithPlus(WWP)、Tomcat 10.1使用

ファイル出力画面の作成

平間 平間
じゃあ早速ユーザーが画面上でボタンを押下することで、ダウンロードフォルダにテキストファイルを出力する機能を実装してみよう!
まずは、ユーザーがファイル出力を行うための画面を作成していきます。

テキストファイル出力

陶
シンプルな画面ができましたね。

平間 平間
シンプルイズベストってことよ😎

ファイル出力プロシージャの作成

平間 平間
画面の作成ができたのでファイル出力のプロシージャを作っていこう!

陶
そうだね。まずは一時ファイルを格納するフォルダパスを取得しよう!

平間 平間
ふむふむ。

/*ファイルパスの取得処理*/
/*ファイルパスの取得処理*/
/* Tempファイル(Blob)をPublicTempStorageディレクトリに作成し、作成後のファイルパスを取得する
※PublicTempStorageディレクトリ:Tomcatサーバー上で動作しているGeneXusアプリケーションの一時ファイルが保存される場所 */

// (1)Blob を作成
&Blob.FromBase64String("MA==")

// (2)Blob のパスを取得
&File.Source = &Blob.ToString()

// (3)ファイルの存在を確認
If &File.Exists()
// ファイルが存在する場合
// (4)ファイルのパスを取得
&Out_Path = &File.GetPath() + &File.Separator

// (5)ファイルを削除
&File.Delete()
Else
// ファイルが存在しない場合
&Out_Path = ""
EndIf

陶
この処理は、一時的なファイル(Tempファイル)を生成し、
そのファイルのパスを取得するために行うよ!

平間 平間
なんとな~くイメージできたけど、要するに一時的に格納するってことだよね。

陶
その通り。
次はここ!ファイルの設定だ。 

/*ファイルの設定*/

// ファイル名の設定
&FileName = !'ファイル書き込み'

// ファイル拡張子設定
&FileExtension = !'txt'

// ファイルパスの定義
&OutFilePathName = &FilePath + &File.Separator + &FileName + !'.' + &FileExtension

平間 平間
ファイル名と拡張子とファイルパスを設定しているね。

陶
そうそう!
それじゃあ次はファイルの書き込みの処理を書いていくね。

/*ファイルへの書き込み*/

// ファイルを開く
&fHandle = DFWOpen(&OutFilePathName,',','',0,'Windows-31J')
// 文字列
&TxtFileWrite = !'あいうえお'
// 書込み
&fHandle = DFWPTxt(&TxtFileWrite)
// 改行処理
&fHandle = DFWNext()
// ファイルを閉じる
&fHandle = DFWClose()

平間 平間
ふむふむ。流れとしては、
1. ファイルを開く。
2. 変数 &TxtFileWrite に、文字列 ‘あいうえお’ をセットする。
3. 文字列’あいうえお’をファイルに書き込む。
4. 改行する。
5. ファイルを閉じる。
って感じかな?

陶
その通り!

平間 平間
なぜ一度変数に文字列を格納しているの??
DFWOpen関数も初めて見たよ。

陶
変数に格納することで文字化けを防いでいるよ!
DFWOpenに関する内容はここでどうぞ!こちらのリンク

平間 平間
ふむふむ。

陶
最後にファイルのダウンロード処理を書いていくよ。

/*作成したファイルをダウンロード*/

&File.Source = &FilePathName
&Blob = &File.GetAbsoluteName()

&file_name_and_extension = trim(&file_name)+'.'+trim(&file_extension)
&httpresponse.AddHeader('Content-Disposition','attachment; filename='+&file_name_and_extension)
&httpresponse.AddFile(&file_blob.ToString())

陶
この処理では、サーバー上にあるファイルをダウンロード可能にするために
HTTPレスポンスにファイル名やファイルデータを設定し、ユーザーのブラウザで
そのファイルをダウンロードできるようにしているよ。

平間 平間
なるほどなるほど。

ファイルを実際に出力してみよう!

陶
ファイルを出力するための準備はできたよ!
実際に画面でファイルを出力してみよう!
準備はいい??

平間 平間
はい🙆

陶
まずは画面を開いて…

ファイル出力画面

陶
ファイル出力ボタンを押すと…

ダウンロード成功

平間 平間
わわっ。陶さん、ファイルがダウンロードされましたよ😲

陶
ちゃんと動いたようだね。
では中身も確認しましょうか。

書き出したファイル

平間 平間
一行目に「あいうえお」が出力されて、ちゃんと改行もされているよ!!

陶
完璧ですね👓

おわりに

今回は、ファイル出力の基本的な流れについてご紹介しました🌻
今回の内容が、皆さんの開発に役立つ一助となれば幸いです。
最後までお読みいただき、ありがとうございました!

執筆者:株式会社Q’sfix

一覧ページへ戻る

CONTACT

システム開発やDXなど
ITソリューションについてもっと知りたい方はこちら

サービス・製品の詳細、スポーツやリハビリといった動作計測技術について
知りたい方やお困りの方はお気軽にお問い合わせください。