DXブログ
GeneXusでのテキストファイル出力の方法

はじめに
こんにちは🌷
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に関する内容はここでどうぞ!こちらのリンク
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レスポンスにファイル名やファイルデータを設定し、ユーザーのブラウザでそのファイルをダウンロードできるようにしているよ。
👤
平間
なるほどなるほど。
ファイルを実際に出力してみよう!
👤
陶
ファイルを出力するための準備はできたよ!
実際に画面でファイルを出力してみよう!
準備はいい??
👤
平間
はい🙆
👤
陶
まずは画面を開いて…
👤
陶
ファイル出力ボタンを押すと…
👤
平間
わわっ。陶さん、ファイルがダウンロードされましたよ😲
👤
陶
ちゃんと動いたようだね。
では中身も確認しましょうか。
では中身も確認しましょうか。
👤
平間
一行目に「あいうえお」が出力されて、ちゃんと改行もされているよ!!
👤
陶
完璧ですね👓
おわりに
今回は、ファイル出力の基本的な流れについてご紹介しました🌻
今回の内容が、皆さんの開発に役立つ一助となれば幸いです。
最後までお読みいただき、ありがとうございました!