0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

【DataMagic】データ加工やってみた!Excel形式[単一セルと表]からCSV形式へ

0
Last updated at Posted at 2026-08-07

はじめに

今回は〝単一セル〟と〝表〟が混在するExcelファイル(所定フォーマット上の伝票データなど)から、CSVファイルを作成してみます。

入力データ

こんな感じのExcelデータを使用します。

Qiita_051-01.jpg

今回は上図の 赤字部分の値 を入力データと想定 しています。

ちなみに、18行目から21行目のG列に入っている値は、Excelの関数を使って、13行目から17行目の金額を計算した結果です。

また、会社名や住所は AI に「在りそうで無い会社名と住所を考えて」とお願いして、出てきた結果をチョットだけ改ざん。

いや~、便利な世の中になりましたなぁ

レイアウト情報

以下の説明内で登録したレイアウト定義を使用します

データ加工

1.入力ファイルエリアの編集

入力形式=Excel

入力設定

以下で説明する項目以外の設定は、初期値を採用します。

レイアウト

ID:
入力ファイル用に登録したID
ファイル名:
伝票データが入ったExcelファイルを指定

Qiita_051-02.jpg

この設定でプレビューした結果がコレ :arrow_down:

Qiita_051-03.jpg

2.出力ファイルエリアの編集

出力設定

以下で説明する項目以外の設定は、初期値を採用します。

レイアウト

ID:
今回は〝省略〟で説明しますが、IDを設定するなら止めません。
ファイル名:
出力先のCSVファイルを指定

Qiita_051-04.jpg

3.抽出条件の設定

初期設定のまま使用

4.関係線の設定1〔抽出条件と出力ファイル〕

抽出条件のアイコンを選んで、出力ファイルのアイコンの上にドラッグ&ドロップし、アイコン間の関係線をつなぎます。

5.関係線の設定2〔入力項目と出力項目をマッピング〕

出力項目側で項目を7つ追加し、下図のように関係線を引いてみました。

Qiita_051-05.jpg

6.データ加工処理

すべての設定が終わったので、 最後にIDを登録して、現在表示されている内容で、データ加工を実行します。

で、出力結果がこちら :arrow_down:

Qiita_051-06.jpg

ムムム。。。なんかチョット違う :thinking:

違和感を修正

1.余計な値が出力されている

出力結果には、想定外の情報(紫の部分)が出力されています。

Qiita_051-07.jpg

この紫の部分の出方を見てみると、表(明細)データと認識されているようです。

つまり、Excelの定義をミスっていると言うこと。。。

で、Excelの定義をよ~く見てみると、他にも設定項目が :scream:

Qiita_051-08.jpg

と言うことで、〝終了位置〟と〝終了行番号〟(表の終了条件)の設定をして、出力結果を確認してみます。

:large_orange_diamond::small_orange_diamond: 表の終了条件 :small_orange_diamond::large_orange_diamond:

終了位置 終了行番号 結果(プレビュー)
:one: データの
終わり
Qiita_051-09-1.jpg
:two: 空のレコード Qiita_051-09-1.jpg
:three: 特定の列が
空の行
F
(単価)
Qiita_051-09-2.jpg
:four: 指定行 17 Qiita_051-09-3.jpg
:five: 空のセルが出現した行 Qiita_051-09-2.jpg

今回の入力データであれば、表の終了条件は :three::five: を設定するのが良さそうです。

2.数値が文字扱い

表(明細)データの中の〝数量〟〝単価〟〝金額〟が 囲み文字付で出力 されている :scream:

つまり、文字扱いされている。。。

理由は勿論、Excelの定義で〝数量〟〝単価〟〝金額〟の「項目タイプ」が〝M(可変長文字)〟になっているから。

しかし、これらの項目タイプを〝Z(数字文字列)〟に変えると

指定されたデータは数値ではありません。
シート名(請求書)、セル(E18)、入力内容(小計) 

で処理が異常終了してしまいます :cry:

なので 数値として出力 されるよう、マッピング情報設定で該当項目を編集します。

試しにマッピング情報設定で、出力項目の5番目〝数量〟の設定を

Qiita_051-10.jpg

・項目タイプ = 数字文字列
・有効小数部桁数 = 設定する、0

にして処理を実行してみると、結果はこんな感じ:arrow_lower_left:

Qiita_051-11.jpg

5番目(青色マーカー)の項目に囲み文字無し。
数値として出力されました。

6番目の〝単価〟、7番目の〝金額〟も同様に編集。
ただし、入力データ(Excel画面)を見ると、少数部が2桁付いているので、この2項目は

・有効小数部桁数 = 設定する、2

に設定するのが良いかもです。

Qiita_051-12.jpg

コレで違和感も無事に解決:exclamation:

補足

上記の説明で未だ違和感を持っている人。

そうです。

入力データの17行目に値が入っている場合も、表の終了条件は :three::five: で良いのか :question:

実は、どちらの終了条件も〝F列〟の空値が判断条件になるので :ok: なんです。

ちなみに「結合セルの読み取り」に際しては、

操作マニュアルの 4. レイアウト情報の設定 > 4.7 Excel情報の登録 > 4.7.2 Excelデータの読み取り > (4) シート内のデータの読み取り方法 > b) セル単位での読み取り に

  • セルが結合されている場合、結合範囲の一番左上のセルの値としてデータを読み取ります。
  • それ以外のセルは、該当するデータ型の初期値が読み込まれます。
  • 例えば、数値のデータを読み込む場合、“0”の値が読み込まれます。

の記述が。

入力ファイルの中を開いてみると、
18行目の〝小計〟は E列 と F列 の結合セルなので、一番左上のセルは「E18」
「F18」は〝それ以外のセル〟に該当するので・・・初期値(空値)

Qiita_051-13.jpg

試しに、上図のように17行目にレコードを追加し、表の終了条件を :five: にして処理した結果がこちら :arrow_lower_left:

Qiita_051-14.jpg

以上です。

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?