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化することで、さらなる拡張も可能です。