Excelの表データをAIが扱いやすい形式(JSON)に変換する
概要
本ページでは、Excelの表データを対象に、AIが扱いやすい形式(JSON)へ変換する方法を解説します。
開発現場では、レビュー観点・チェックリスト・要求一覧などがExcelの表形式で管理されることがよくあります。
一方で、AIエージェントやワークフローにExcelをそのまま渡すと、表以外の情報が混ざり、AIが表構造を安定して解釈できないことがあります。
- 注釈、空行、メモ、装飾、別表などが該当します。
- 人間は見た目で判断できますが、機械にとってはセル情報の集合でしかないため、ノイズが増えるほど意図どおりに扱いにくくなります。
そのため本Tipsでは、「表部分だけを機械的に抽出し、JSONとして整形してからワークフロー入力として利用する」 運用を扱います。
JSON に変換するメリット
- 表部分だけを機械的に抽出してJSONのような構造化データにしておくと、後続の網羅処理(行ごとのレビュー、チェック、分類など)が再現性高く回せます。 特にセル結合がある表は単純な文字列出力だと崩れやすいため、抽出段階で形を整えておくのが効果的です。
- 「AIに頑張って表を読み取らせる」のではなく、ワークフロー側で表構造を確実にJSONへ落とすことで、モデル依存を減らし、再現性を高められます。
運用案として、JSONを正として蓄積し、ExcelはJSONをインポートして閲覧・編集に使う方法も検討できます。
(既存のExcelフォーマットに組み込まれている場合など、どうしても抽出が必要なケースもあります。)
主なユースケース
- Excelの表形式で書かれたレビュー観点を抽出し、ワークフローで網羅的レビューに利用したい
- レビュー対象の表データ(仕様一覧、要件一覧など)を抽出し、ワークフローで網羅的にレビューしたい
- その他、表データのAI活用(分類、正規化、欠損チェック、重複検出など)を行いたい
今回のゴール
Excelの表をJSON化し、ファイルとして出力できる状態にします。
- ステップ1:現在Excelで選択しているセル範囲のアドレスを取得(例:
A1:C5/Sheet1!A1:C5) - ステップ2:取得したアドレスを使ってExcelの範囲データを取得
- ステップ3:取得した表データ(Table形式)をJSON文字列へ変換
- ステップ4:JSON文字列をファイルに書き出し
基本処理は上記の「ツール実行×2 → Python → ツール実行」の4ステップ構成です。
実運用で迷いやすい「Excelで範囲選択する操作」を先頭に追 加し、全体の流れとしては5項目で説明しています。
事前準備
ここでは、手順を明確に説明するため、Agentiqsのワークフロー機能を使って説明します。 選択範囲をPythonでJSONに変換できる環境であれば、同様の処理を実行できます。
- 対象のExcelファイルを開ける状態にしてください。
- 取得したい表が、Excel上で範囲選択できる状態になっていることを確認してください(見出し行を含めて選択します)。
- ワークフローで以下を利用できる状態にしてください。
- Excelツール
- Python実行ステップ
- FileAccessツール
Excel表 → JSON への変換
まず、Excelで変換したい表範囲を選択します。
Excelを開き、JSON化したい表の範囲(見出し行を含む)をドラッグして選択してください。
本TipsのJSON変換スクリプトは、選択範囲の1行目を「見出し(キー)」として扱います。
以降、ステップ1~4に対応する処理を追加します。
-
選択範囲アドレスを取得します。 ワークフロー編集画面で、左側ツールボックスより"ツール実行"をドラッグ&ドロップし、
ステップのプロパティを以下のように設定します(添付ワークフロー例の構成)。設定項目
プロパティ 必須 設定項目 詳細説明 タイトル 〇 例: 選択範囲アドレス取得ステップの目的が分かる名前にします。 説明 例: 現在Excelで選択中のセル範囲アドレスを取得する任意です。 ツール名 〇 Microsoft Excel呼び出すExcelツールを選択します。 関数名 〇 例: 選択範囲アドレス取得現在の選択範囲のアドレスを取得します。 結 果格納先 〇 rangeAddress後続ステップで参照します。 
-
Excelデータを取得します。(選択範囲を入力にする)
もう1つ"ツール実行"を追加し、選択範囲アドレス(rangeAddress)を使って範囲データを取得してください。設定項目
プロパティ 必須 設定項目 詳細説明 タイトル 〇 例: Excelデータ取得ステップの目的が分かる名前にします。 説明 例: 指定した範囲のExcelデータを取得する任意です。 ツール名 〇 Microsoft Excel呼び出すExcelツールを選択します。 関数名 〇 例: 範囲データ取得指定した範囲のデータを取得します。 パラメータ 〇 {{rangeAddress}}ステップ1の出力を渡します。 結果格納先 〇 excelData後続のPythonステップで参照します。 
-
PythonでJSONへ変換します。
左側ツールボックスより"Python スクリプト"を追加し、スクリプトに以下を設定します。
設定するスクリプト
import jsonexcel_data = vars.excelData# ツールの返却形式がオブジェクト/辞書の両方あり得るため両対応if hasattr(excel_data, 'Table'):table = excel_data.Tableelse:table = excel_data['Table']rows = []if table and len(table) > 1:headers = [str(h) for h in table[0]]for row in table[1:]:row_dict = {}for i, val in enumerate(row):key = headers[i] if i < len(headers) else str(i)row_dict[key] = str(val) if val is not None else ''rows.append(row_dict)# 後続ステップで使いやすいようにJSON文字列として格納vars.jsonString = json.dumps(rows, ensure_ascii=False, indent=2)上記スクリプトでは、次のようなオブジェクトの配列になります。
ワークフローでのループ処理や、AIエージェントへの入力にそのまま渡しやすい形式です。変換結果(例)
[{"観点": "入力バリデーション","期待結果": "不正入力時にエラーメッセージが表示される","重要度": "高"}] -
ファイルを書き出します。(FileAccess)
"ツール実行"を追加し、FileAccessツールのWriteFileでJSONをファイル出力してください。設定項目
プロパティ 必須 設定項目 詳細説明 ツール名 〇 任意のFileAccessツール 出力フォルダをベースディレクトリに指定してください。 関数名 〇 ファイル作成・更新 path 〇 例: {出力先フォルダパス}/excel_table.json保存先パスを指定します。
実際の絶対パスに置き換えてください。content 〇 {{jsonString | to_json}}Pythonで作成したJSON文字列を指定します。 
実行結果を確認する
ワークフローの実行が完了したら、実行履歴から次を確認してください。
- ステップ1:
rangeAddressが期待するセル範囲アドレスになっていること - ステップ2:
excelData.Tableが2次元配列として取得できていること - ステップ3:
jsonStringが期待するJSON(配列)になっていること - ステップ4:(任意)
{出力先フォルダパス}/excel_table.jsonが作成されていること
さらなる活用ポイント
表形式に応じて変換処理を調整する
ステップ3で利用する Pythonスクリプトで、フォーマットの形式を変換しています。
- 帳票など、セル結合を含むフォーマットが毎回同じ場合、本ページの手順でフォーマットに合わせたスクリプトを使うことができます。
- 都度フォーマットが変わる場合はそのままでは使えませんので、形式に合わせてスクリプトの内容を変更してください。
例)カラムデータ取得 → 表形式に合わせてPythonスクリプトを調整する → スクリプトを実行する → JSONを取得する など。
Excelの表で空のセル(null)を扱う方法
空セルや結合セルは null(Pythonでは None)として返ることがあります。
表データの用途では、列ずれを防ぐためにnullを省略せず、セルとして保持することが必要になることがあります。
- 本ページの
Python例では、Noneを空文字('')に変換して構造を維持しています。
nullをそのまま出力したい場合は、row_dict[key] = valのように値変換方針を設定してください。 - そのまま
to_jsonで出力することもできます。- ステップ4で
excelDataの出力をテンプレート(フィルタ)でJSON化する場合、ignoreNullsパラメータの設定によってnullの扱いが変わります。nullを省略したい場合:ignoreNulls: truenullを省略せず保持したい場合:ignoreNulls: false
- 設定例(nullを保持):
{{ obj | to_json { ignoreNulls: false } }}
- ステップ4で
このように、Excelの表を「構造化(JSON)」してからワークフローへ渡すことで、モデル依存を減らし、網羅処理を安定して実現できます。
現場のフォーマットに合わせた変換設計(固定フォーマット対応、複数表の抽出、正規化ルール設計など)について、
個別の支援が必要な場合は、お問い合わせください。