Java で開発を行う中で、CSV ファイルを Excel に変換する 作業は、レポート作成やデータ分析、ファイル変換ツールなど、さまざまなシーンで頻繁に求められます。手動で CSV をパースすることも可能ですが、コードが煩雑になりやすく、書式の制御も困難です。
その点、Spire.XLS for Java のような Excel 専用ライブラリを活用することで、レイアウトやスタイルの制御、テンプレートの活用、複数 CSV の統合 などを、シンプルなコードで実現できます。
このチュートリアルでは、Java で CSV を Excel に変換するさまざまな方法を紹介します。基本的な変換から、書式設定、テンプレートの利用、複数 CSV のマージまでを網羅しています。
目次
- Spire.XLS のセットアップ
- CSV を Excel に変換する基本手順
- Excel 出力に書式を適用する
- 複数の CSV を 1 つの Excel にまとめる
- トラブル対処とヒント
- よくある質問
Spire.XLS を Java プロジェクトに導入する
CSV を Excel に変換する前に、Spire.XLS for Java をプロジェクトに追加しましょう。XLS と XLSX の両形式に対応し、Microsoft Office に依存せずに Excel ファイルを操作できます。
Maven で導入する
<repositories>
<repository>
<id>com.e-iceblue</id>
<name>e-iceblue</name>
<url>https://repo.e-iceblue.com/nexus/content/groups/public/</url>
</repository>
</repositories>
<dependencies>
<dependency>
<groupId>e-iceblue</groupId>
<artifactId>spire.xls</artifactId>
<version>15.6.3</version>
</dependency>
</dependencies>
JAR ファイルを手動で追加する
Spire.XLS for Java をダウンロード し、JAR ファイルをクラスパスに追加します。小規模プロジェクトには Free Spire.XLS for Java の利用も可能です。
Java で CSV ファイルを Excel に変換する
最も基本的な使い方は、1 つの CSV ファイルを XLSX または XLS に変換することです。Spire.XLS を使えば、loadFromFile() と saveToFile() の 2 つのメソッドだけで簡単に変換が可能です。
import com.spire.xls.*;
public class CsvToXlsx {
public static void main(String[] args) {
Workbook workbook = new Workbook();
workbook.loadFromFile("data.csv", ",");
workbook.saveToFile("output.xlsx", ExcelVersion.Version2013);
}
}
.xls 形式で保存したい場合は、ExcelVersion.Version97to2003 を使用します。
以下は、CSVをExcelファイルに変換した後の出力ファイルです。
また、区切り文字や開始行・列も指定できるため、タイトル付き CSV やレイアウトが決まっているシートにも対応できます。
workbook.loadFromFile("data_semicolon.csv", ";", 3, 2);
Java で Excel 出力に書式を適用する
レポートや顧客向けドキュメントを出力する際には、見やすさや印象のために書式の適用が欠かせません。Spire.XLS では、セルフォント、背景色、数値書式、列幅の自動調整 など、多彩なスタイル制御が可能です。
スタイル適用と列幅自動調整の例
import com.spire.xls.*;
import java.awt.*;
public class CsvToXlsx {
public static void main(String[] args) {
Workbook workbook = new Workbook();
workbook.loadFromFile("data.csv", ",");
Worksheet sheet = workbook.getWorksheets().get(0);
// ヘッダー行の書式設定
CellStyle headerStyle = workbook.getStyles().addStyle("Header");
headerStyle.getFont().isBold(true);
headerStyle.setKnownColor(ExcelColors.LightYellow);
for (int col = 1; col <= sheet.getLastColumn(); col++) {
sheet.getCellRange(1, col).setStyle(headerStyle);
}
// 数値列の書式設定
// セルの値の型を数値に変換します(デフォルトでは、すべてのセルの書式がテキストに設定されます)
for (int row = 2; row <= sheet.getLastRow(); row++) {
sheet.getCellRange(row, 3).setNumberValue(Double.parseDouble(sheet.getCellRange(row, 3).getText()));
}
CellStyle numStyle = workbook.getStyles().addStyle("Numbers");
numStyle.setNumberFormat("#,##0.00");
sheet.getCellRange(2, 3, sheet.getLastRow(), 3).setStyle(numStyle);
// 枠線の設定
sheet.getRange().borderInside(LineStyleType.Thin, Color.black);
// フォント名を設定(自動整列のため)
sheet.getRange().getStyle().getFont().setFontName("Yu Gothic UI");
// 全列の幅を自動調整
for (int i = 1; i <= sheet.getLastRow(); i++) {
sheet.autoFitColumn(i);
}
workbook.saveToFile("formatted_output.xlsx", ExcelVersion.Version2013);
}
}
以下は、フォーマットされたヘッダーと数値列を含むスタイル設定済みのExcel出力の例です。
テンプレートファイル(既存の Excel)に CSV データを挿入したい場合は、insertArray() メソッドなどで可能です。
ただし、テンプレートに挿入したデータには自動で書式は反映されないため、CellStyle で別途スタイルを設定しましょう。
複数の CSV ファイルを 1 つの Excel にまとめる
複数の CSV ファイルを扱う場合、ワークシート単位で分ける か、1 つのシートにすべてまとめる かを選べます。
オプション 1:CSV ごとに別シートに配置
import com.spire.xls.*;
import java.io.File;
public class CsvToXlsx {
public static void main(String[] args) {
File[] csvFiles = new File("CSVs/").listFiles((dir, name) -> name.endsWith(".csv"));
Workbook workbook = new Workbook();
workbook.getWorksheets().clear();
for (File csv : csvFiles) {
Workbook temp = new Workbook();
temp.loadFromFile(csv.getAbsolutePath(), ",");
workbook.getWorksheets().addCopy(temp.getWorksheets().get(0));
}
workbook.saveToFile("merged.xlsx", ExcelVersion.Version2016);
}
}
各CSVファイルは、最終的なExcelファイル内のそれぞれのワークシートに配置されます。
オプション 2:すべての CSV データを 1 つのシートに統合
import com.spire.xls.*;
import java.io.File;
public class CsvToXlsx {
public static void main(String[] args) {
File[] csvFiles = new File("CSVs/").listFiles((dir, name) -> name.endsWith(".csv"));
Workbook workbook = new Workbook();
workbook.getWorksheets().clear();
Worksheet sheet = workbook.getWorksheets().add("Sample");
int startRow = 1;
boolean isFirstFile = true;
for (File csv : csvFiles) {
Workbook temp = new Workbook();
temp.loadFromFile(csv.getAbsolutePath(), ",");
Worksheet tempSheet = temp.getWorksheets().get(0);
int startReadRow = isFirstFile ? 1 : 2;
isFirstFile = false;
for (int r = startReadRow; r <= tempSheet.getLastRow(); r++) {
for (int c = 1; c <= tempSheet.getLastColumn(); c++) {
sheet.getCellRange(startRow, c).setValue(tempSheet.getCellRange(r, c).getText());
}
startRow++;
}
}
workbook.saveToFile("merged_single_sheet.xlsx", ExcelVersion.Version2016);
}
}
以下は、すべてのCSVデータを1つのワークシートに統合した最終的なExcelシートです。
関連チュートリアル:
Javaを使用したExcelファイルの結合と分割
トラブル対処とヒント
出力に問題がある場合は以下を確認してください:
- 文字化けが発生する場合
CSV が UTF-8 でエンコードされているか確認してください。
- 列が正しく分割されない場合
区切り文字(カンマやセミコロン)が一致しているか確認。
- ファイルサイズが大きすぎる場合
複数シートに分けるなどでメモリ使用量を最適化。
- CSV ごとに構造が異なる場合
列名や順番を事前に統一しましょう。
まとめ
単純な CSV 変換から、ビジネス文書の自動出力まで、Spire.XLS for Java は Java による Excel 生成を強力にサポートします。数行のコードで CSV から Excel(XLSX/XLS)への変換が可能で、スタイル適用やテンプレート挿入、複数 CSV の統合まで柔軟に対応できます。
自動化によって作業を効率化し、見栄えの良いプロフェッショナルな Excel ファイルを簡単に作成できます。
一時ライセンスを申請 すれば、すべての機能を無制限でお試しいただけます。
よくある質問(FAQ)
Java で CSV を XLSX に変換するには?
Workbook.loadFromFile("file.csv", ",") で読み込み、saveToFile("output.xlsx", ExcelVersion.Version2016) で保存します。
Excel 出力にスタイルを適用できますか?
はい。CellStyle を使ってフォント、色、配置、数値書式などを設定できます。
CSV データを Excel テンプレートに挿入できますか?
可能です。テンプレートファイルを読み込み、setText() や insertDataTable() などで CSV 内容を挿入します。
複数の CSV を 1 つの Excel にまとめるには?
それぞれの CSV を別シートに追加するか、1 つのシートにすべてのデータを順に挿入することで対応できます。