お昼はカレーライスを食べたい。okitaです。
エクセルを読み込むときに備忘録。
サンプルって書くと「こんなのサンプルにならない」とか言われるかもしれないので
「備忘録」という便利な言葉を使用(`・ω・´)
今回想定する流れは
・エクセルを読込⇒DBに情報を保存
・DBから情報を取得⇒エクセルファイルに保存
使用した環境は以下
GeneXus X Ev2 u7
C# IIS .Net
■エクセルを読込 – プロシージャ
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 |
// エクセルのファイルパスを設定 &FilePath = !"C:\Temp\Excel\テスト.xlsx" // エクセルを開く &Result = &ExcelDocument.Open(&FilePath) Do 'Excel_ErrCheck' // セルの初期値を設定 &Row = 2 // ヘッダーが存在するので2からスタート &Col = 1 // A列の「No」が空になるまで読み込む Do while &ExcelDocument.Cells(&Row,&Col).Text.Trim() <> !"" // セルが数値だった場合 If &ExcelDocument.Cells(&Row,&Col).Type = !"N" &No = &ExcelDocument.Cells(&Row,&Col).Number Endif // セルが文字だった場合 If &ExcelDocument.Cells(&Row,&Col+1).Type = !"C" &Name = &ExcelDocument.Cells(&Row,&Col+1).Text Endif // セルが数値だった場合 If &ExcelDocument.Cells(&Row,&Col+2).Type = !"N" &Point = &ExcelDocument.Cells(&Row,&Col+2).Number Endif // データ更新 New // No AutoNumber Name = &Name Point = &Point Endnew // 次の行へ移動 &Row += 1 Enddo // エクセルを閉じる &ExcelDocument.Close() Return Sub 'Excel_ErrCheck' If &Result <> 0 // エラーの場合 終了 MSG(&ExcelDocument.ErrDescription) &ExcelDocument.Close() Return Endif Endsub |
読み込むエクセルのレイアウトはこんな感じ
★☆★☆ 結果 ★☆★☆
★☆★☆ 解説 ★☆★☆
とりあえずエクセルを読み込んでデータベースに登録してます。
一応
&ExcelDocument.Cells(&Row,&Col).Type
この部分でセルのタイプを判定してますが
必要に応じてタイプ判定してください。
※ちなみに備忘録なので自動Commitでふ!
■エクセルを保存 – プロシージャ
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 |
// エクセルのファイルパスを設定 &FilePath = !"C:\Temp\Excel\テスト2.xlsx" // エクセルを開く &Result = &ExcelDocument.Open(&FilePath) Do 'Excel_ErrCheck' // セルの初期値を設定 &Row = 1 &Col = 1 // ヘッダーを出力 &ExcelDocument.Cells(&Row,&Col).Text = !"No" &ExcelDocument.Cells(&Row,&Col+1).Text = !"名前" &ExcelDocument.Cells(&Row,&Col+2).Text = !"得点" // DBを読み込んでデータを出力 For each // 次の行に移動 &Row += 1 // No &ExcelDocument.Cells(&Row,&Col).Number = No // 名前 &ExcelDocument.Cells(&Row,&Col+1).Text = Name // 得点 &ExcelDocument.Cells(&Row,&Col+2).Number = Point Endfor // エクセルを保存 &Result = &ExcelDocument.Save() Do 'Excel_ErrCheck' // エクセルを閉じる &Result = &ExcelDocument.Close() Return Sub 'Excel_ErrCheck' If &Result <> 0 // エラーの場合 終了 MSG(&ExcelDocument.ErrDescription) &ExcelDocument.Close() Return Endif Endsub |
★☆★☆ 結果 ★☆★☆
★☆★☆ 結果 ★☆★☆
一番最初にエクセルのパスを固定してますが
パスとか名前はコーディングルールやそのときのプロジェクトの設計に沿って
設定してください!
以上がGeneXusでエクセルを使う感じでした。
結構簡単なのですが罫線とか引けないのが痛いですねwww
公式wikiのリンクも張っておきますよっと。
GeneXus wiki – ExcelDocument データタイプ
http://wiki.genexus.jp/hwiki.aspx?ExcelDocument+%E3%83%87%E3%83%BC%E3%82%BF%E3%82%BF%E3%82%A4%E3%83%97
GeneXus wiki – ExcelCells データタイプ
http://wiki.genexus.jp/hwiki.aspx?ExcelCells+%E3%83%87%E3%83%BC%E3%82%BF%E3%82%BF%E3%82%A4%E3%83%97
GeneXus wiki – ExcelCells データタイプ(Type)
http://wiki.genexus.jp/hwiki.aspx?%5bExtended+Data+Type+Type%5d+%E3%83%97%E3%83%AD%E3%83%91%E3%83%86%E3%82%A3