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 つのシートにすべてのデータを順に挿入することで対応できます。