はじめに
今回は〝単一セル〟と〝表〟が混在するExcelファイル(所定フォーマット上の伝票データなど)から、CSVファイルを作成してみます。
入力データ
こんな感じのExcelデータを使用します。
今回は上図の 赤字部分の値 を入力データと想定 しています。
ちなみに、18行目から21行目のG列に入っている値は、Excelの関数を使って、13行目から17行目の金額を計算した結果です。
また、会社名や住所は AI に「在りそうで無い会社名と住所を考えて」とお願いして、出てきた結果をチョットだけ改ざん。
いや~、便利な世の中になりましたなぁ
レイアウト情報
以下の説明内で登録したレイアウト定義を使用します
データ加工
1.入力ファイルエリアの編集
入力形式=Excel
入力設定
以下で説明する項目以外の設定は、初期値を採用します。
レイアウト
- ID:
- 入力ファイル用に登録したID
- ファイル名:
- 伝票データが入ったExcelファイルを指定
この設定でプレビューした結果がコレ ![]()
2.出力ファイルエリアの編集
出力設定
以下で説明する項目以外の設定は、初期値を採用します。
レイアウト
- ID:
- 今回は〝省略〟で説明しますが、IDを設定するなら止めません。
- ファイル名:
- 出力先のCSVファイルを指定
3.抽出条件の設定
初期設定のまま使用
4.関係線の設定1〔抽出条件と出力ファイル〕
抽出条件のアイコンを選んで、出力ファイルのアイコンの上にドラッグ&ドロップし、アイコン間の関係線をつなぎます。
5.関係線の設定2〔入力項目と出力項目をマッピング〕
出力項目側で項目を7つ追加し、下図のように関係線を引いてみました。
6.データ加工処理
すべての設定が終わったので、 最後にIDを登録して、現在表示されている内容で、データ加工を実行します。
で、出力結果がこちら ![]()
ムムム。。。なんかチョット違う ![]()
違和感を修正
1.余計な値が出力されている
出力結果には、想定外の情報(紫の部分)が出力されています。
この紫の部分の出方を見てみると、表(明細)データと認識されているようです。
つまり、Excelの定義をミスっていると言うこと。。。
で、Excelの定義をよ~く見てみると、他にも設定項目が ![]()
と言うことで、〝終了位置〟と〝終了行番号〟(表の終了条件)の設定をして、出力結果を確認してみます。
![]()
表の終了条件 ![]()
![]()
| № | 終了位置 | 終了行番号 | 結果(プレビュー) |
|---|---|---|---|
| データの 終わり |
ー | ![]() |
|
| 空のレコード | ー | ![]() |
|
| 特定の列が 空の行 |
F (単価) |
![]() |
|
| 指定行 | 17 | ![]() |
|
| 空のセルが出現した行 | ー | ![]() |
今回の入力データであれば、表の終了条件は
か
を設定するのが良さそうです。
2.数値が文字扱い
表(明細)データの中の〝数量〟〝単価〟〝金額〟が 囲み文字付で出力 されている ![]()
つまり、文字扱いされている。。。
理由は勿論、Excelの定義で〝数量〟〝単価〟〝金額〟の「項目タイプ」が〝M(可変長文字)〟になっているから。
しかし、これらの項目タイプを〝Z(数字文字列)〟に変えると
シート名(請求書)、セル(E18)、入力内容(小計)
で処理が異常終了してしまいます ![]()
なので 数値として出力 されるよう、マッピング情報設定で該当項目を編集します。
試しにマッピング情報設定で、出力項目の5番目〝数量〟の設定を
・有効小数部桁数 = 設定する、0
にして処理を実行してみると、結果はこんな感じ![]()
5番目(青色マーカー)の項目に囲み文字無し。
数値として出力されました。
6番目の〝単価〟、7番目の〝金額〟も同様に編集。
ただし、入力データ(Excel画面)を見ると、少数部が2桁付いているので、この2項目は
に設定するのが良いかもです。
コレで違和感も無事に解決![]()
補足
上記の説明で未だ違和感を持っている人。
そうです。
入力データの17行目に値が入っている場合も、表の終了条件は
か
で良いのか ![]()
実は、どちらの終了条件も〝F列〟の空値が判断条件になるので
なんです。
ちなみに「結合セルの読み取り」に際しては、
操作マニュアルの 4. レイアウト情報の設定 > 4.7 Excel情報の登録 > 4.7.2 Excelデータの読み取り > (4) シート内のデータの読み取り方法 > b) セル単位での読み取り に
- セルが結合されている場合、結合範囲の一番左上のセルの値としてデータを読み取ります。
- それ以外のセルは、該当するデータ型の初期値が読み込まれます。
- 例えば、数値のデータを読み込む場合、“0”の値が読み込まれます。
の記述が。
入力ファイルの中を開いてみると、
18行目の〝小計〟は E列 と F列 の結合セルなので、一番左上のセルは「E18」
「F18」は〝それ以外のセル〟に該当するので・・・初期値(空値)
試しに、上図のように17行目にレコードを追加し、表の終了条件を
にして処理した結果がこちら ![]()
以上です。















