Skip to main content

Excelの表データをAIが扱いやすい形式(JSON)に変換する

概要​

本ページでは、Excelの表データを対象に、AIが扱いやすい形式(JSON)へ変換する方法を解説します。

開発現場では、レビュー観点・チェックリスト・要求一覧などがExcelの表形式で管理されることがよくあります。
一方で、AIエージェントやワークフローにExcelをそのまま渡すと、表以外の情報が混ざり、AIが表構造を安定して解釈できないことがあります。

  • 注釈、空行、メモ、装飾、別表などが該当します。
  • 人間は見た目で判断できますが、機械にとってはセル情報の集合でしかないため、ノイズが増えるほど意図どおりに扱いにくくなります。

そのため本Tipsでは、「表部分だけを機械的に抽出し、JSONとして整形してからワークフロー入力として利用する」 運用を扱います。

JSON に変換するメリット​

  • 表部分だけを機械的に抽出してJSONのような構造化データにしておくと、後続の網羅処理(行ごとのレビュー、チェック、分類など)が再現性高く回せます。 特にセル結合がある表は単純な文字列出力だと崩れやすいため、抽出段階で形を整えておくのが効果的です。
  • 「AIに頑張って表を読み取らせる」のではなく、ワークフロー側で表構造を確実にJSONへ落とすことで、モデル依存を減らし、再現性を高められます。
tip

運用案として、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に対応する処理を追加します。

  1. 選択範囲アドレスを取得します。 ワークフロー編集画面で、左側ツールボックスより"ツール実行"をドラッグ&ドロップし、
    ステップのプロパティを以下のように設定します(添付ワークフロー例の構成)。

    設定項目
    プロパティ必須設定項目詳細説明
    タイトル〇例:選択範囲アドレス取得ステップの目的が分かる名前にします。
    説明例:現在Excelで選択中のセル範囲アドレスを取得する任意です。
    ツール名〇Microsoft Excel呼び出すExcelツールを選択します。
    関数名〇例:選択範囲アドレス取得現在の選択範囲のアドレスを取得します。
    結果格納先〇rangeAddress後続ステップで参照します。
  2. Excelデータを取得します。(選択範囲を入力にする)
    もう1つ"ツール実行"を追加し、選択範囲アドレス(rangeAddress)を使って範囲データを取得してください。

    設定項目
    プロパティ必須設定項目詳細説明
    タイトル〇例:Excelデータ取得ステップの目的が分かる名前にします。
    説明例:指定した範囲のExcelデータを取得する任意です。
    ツール名〇Microsoft Excel呼び出すExcelツールを選択します。
    関数名〇例:範囲データ取得指定した範囲のデータを取得します。
    パラメータ〇{{rangeAddress}}ステップ1の出力を渡します。
    結果格納先〇excelData後続のPythonステップで参照します。
  3. PythonでJSONへ変換します。
    左側ツールボックスより"Python スクリプト"を追加し、スクリプトに以下を設定します。

    設定するスクリプト
    import json

    excel_data = vars.excelData

    # ツールの返却形式がオブジェクト/辞書の両方あり得るため両対応
    if hasattr(excel_data, 'Table'):
    table = excel_data.Table
    else:
    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エージェントへの入力にそのまま渡しやすい形式です。

    変換結果(例)
    [
    {
    "観点": "入力バリデーション",
    "期待結果": "不正入力時にエラーメッセージが表示される",
    "重要度": "高"
    }
    ]
  4. ファイルを書き出します。(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: true
      • null を省略せず保持したい場合:ignoreNulls: false
    • 設定例(nullを保持):
      {{ obj | to_json { ignoreNulls: false } }}
    詳細は「パラメータ付きフィルタ記法」を参照してください。

このように、Excelの表を「構造化(JSON)」してからワークフローへ渡すことで、モデル依存を減らし、網羅処理を安定して実現できます。
現場のフォーマットに合わせた変換設計(固定フォーマット対応、複数表の抽出、正規化ルール設計など)について、
個別の支援が必要な場合は、お問い合わせください。

このページは役に立ちましたか?