Pythonで生成したJSONをJavaで読み込みExcel帳票を出力する方法【業務自動化にも最適】

PythonでスクレイピングやAI処理を行い、得られた結果をJavaで処理・出力したい場面は少なくありません。特に業務システムでは、JSON形式で中間データを共有し、Excelで帳票出力するというニーズが高まっています。

この記事では、Pythonで生成したJSONファイルをJavaで読み取り、Apache POIライブラリを使ってExcel帳票として出力する方法を解説します。


想定するユースケース

  • Python側でスクレイピングやAI処理を実行し、JSON形式で保存
  • Java側でJSONを読み込み、業務向け帳票(Excel)として整形・出力
  • バッチ処理やシステム連携に活用可能

前提環境

  • Java 11以降
  • Apache POI
  • JSONライブラリ(Jackson または org.json など)
  • JSON形式のサンプルデータ

ステップ1:PythonでJSONデータを生成

例として以下のようなPythonコードでJSONを出力します。

import json

data = [
    {"name": "田中太郎", "score": 85, "passed": True},
    {"name": "佐藤花子", "score": 72, "passed": True},
    {"name": "山本一郎", "score": 48, "passed": False}
]

with open("output.json", "w", encoding="utf-8") as f:
    json.dump(data, f, ensure_ascii=False, indent=2)

ステップ2:JavaでJSONを読み込む

使用ライブラリ(Maven)

<dependencies>
  <dependency>
    <groupId>org.apache.poi</groupId>
    <artifactId>poi-ooxml</artifactId>
    <version>5.2.3</version>
  </dependency>
  <dependency>
    <groupId>com.fasterxml.jackson.core</groupId>
    <artifactId>jackson-databind</artifactId>
    <version>2.15.0</version>
  </dependency>
</dependencies>

JSON読み込みクラス(Java)

import com.fasterxml.jackson.core.type.TypeReference;
import com.fasterxml.jackson.databind.ObjectMapper;

import java.io.File;
import java.util.List;
import java.util.Map;

public class JsonReader {
    public static List<Map<String, Object>> readJson(String path) throws Exception {
        ObjectMapper mapper = new ObjectMapper();
        return mapper.readValue(new File(path), new TypeReference<>() {});
    }
}

ステップ3:Excel帳票として出力(Apache POI使用)

import org.apache.poi.ss.usermodel.*;
import org.apache.poi.xssf.usermodel.XSSFWorkbook;

import java.io.FileOutputStream;
import java.util.List;
import java.util.Map;

public class ExcelExporter {
    public static void exportToExcel(List<Map<String, Object>> data, String outputPath) throws Exception {
        Workbook workbook = new XSSFWorkbook();
        Sheet sheet = workbook.createSheet("成績一覧");

        // ヘッダー作成
        Row headerRow = sheet.createRow(0);
        String[] headers = {"名前", "得点", "合格"};
        for (int i = 0; i < headers.length; i++) {
            headerRow.createCell(i).setCellValue(headers[i]);
        }

        // データ行作成
        int rowNum = 1;
        for (Map<String, Object> row : data) {
            Row excelRow = sheet.createRow(rowNum++);
            excelRow.createCell(0).setCellValue(row.get("name").toString());
            excelRow.createCell(1).setCellValue(Integer.parseInt(row.get("score").toString()));
            excelRow.createCell(2).setCellValue((Boolean) row.get("passed") ? "○" : "×");
        }

        // 書き出し
        try (FileOutputStream out = new FileOutputStream(outputPath)) {
            workbook.write(out);
        }

        workbook.close();
    }
}

ステップ4:メイン処理

public class Main {
    public static void main(String[] args) throws Exception {
        List<Map<String, Object>> data = JsonReader.readJson("output.json");
        ExcelExporter.exportToExcel(data, "report.xlsx");
    }
}

出力結果サンプル

生成されたExcelファイルには以下のようなデータが整形表示されます。

名前得点合格
田中太郎85
佐藤花子72
山本一郎48×

まとめ

  • Pythonで生成したJSONデータをJavaに取り込み、Apache POIでExcel出力する手法を紹介しました。
  • 異言語連携で帳票作成の自動化・業務効率化が可能になります。
  • 今後はSpring BootでWeb API化することで、さらなる拡張も可能です。
タイトルとURLをコピーしました