0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

JavaでCSVファイルを書式付きのExcelファイルに変換する方法

Posted at

日常的なデータ処理やレポート作成の現場では、CSV形式はそのシンプルさから広く利用されています。しかし、CSVファイルは書式や構造がなく、データの視認性や分析性に欠ける場面も少なくありません。それに対して、Excel形式(.xlsxなど)は豊富なスタイル設定に対応しており、レポートの配布や印刷にも適しています。

本記事では、Javaを使用してCSVファイルをExcelファイルに変換し、必要に応じてスタイルを追加することで、より見やすく、よりプロフェッショナルな出力結果を実現する方法をご紹介します。

  • CSVをExcel(.xlsx)に変換
  • ヘッダー行や数値列にスタイルを適用
  • 列幅を自動調整してレイアウトを整える

必要なライブラリの導入

まず、使用するライブラリ(JARファイル)をプロジェクトに追加する必要があります。以下のリンクから Free Spire.XLS for Java 公式サイト よりダウンロード可能です。また、Mavenによる導入にも対応しています:

<dependency>
    <groupId>e-iceblue</groupId>
    <artifactId>spire.xls.free</artifactId>
    <version>5.3.0</version>
</dependency>

サンプル1:CSVをシンプルにExcelへ変換

CSVファイルを.xlsx形式に変換するだけであれば、以下のようなシンプルなコードで実現できます:

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);
    }
}

このコードは data.csv をExcelファイルに変換し、元の内容をそのまま反映させます(文字コードはUTF-8を想定)。区切り文字がセミコロン(;)などの場合は、第二引数を調整してください。

サンプル2:変換と同時にスタイルを適用

実際の業務では、Excelの出力結果に視認性を持たせるため、ヘッダーを太字にしたり、背景色を設定したり、数値にフォーマットを適用したりすることが一般的です。以下は、CSV変換後にスタイルを追加する例です:

import com.spire.xls.*;

public class CsvToXlsx {
    public static void main(String[] args) {
        Workbook workbook = new Workbook();
        workbook.loadFromFile("data.csv", ",");

        Worksheet sheet = workbook.getWorksheets().get(0);

        // ヘッダー行(1行目)のスタイル設定
        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);
        }

        // 数値列(例:B列)にフォーマットを適用
        CellStyle numStyle = workbook.getStyles().addStyle("Numbers");
        numStyle.setNumberFormat("#,##0.00");
        sheet.getCellRange("B2:B100").setStyle(numStyle);

        // すべての列幅を自動調整
        for (int i = 1; i <= sheet.getLastRow(); i++) {
            sheet.autoFitColumn(i);
        }

        workbook.saveToFile("formatted_output.xlsx", ExcelVersion.Version2013);
    }
}

このコードでは、次の3点を強化しています:

  1. ヘッダー行の強調表示:太字+淡い黄色の背景色を設定
  2. 数値フォーマットの適用:3桁区切り+小数点以下2桁で表示
  3. 列幅の自動調整:内容に応じて列幅を最適化し、表示の切り捨てを防止

ビフォー・アフター比較

スタイルなしの変換結果:

convert-csv-to-excel-in-java-1.png

簡易フォーマットを適用したExcel出力:
convert-csv-to-excel-in-java-2.png

このように、ヘッダーに背景色が追加されることで、視認性が大幅に向上します。

まとめ

この記事で紹介した方法を使えば、CSVファイルを簡単にExcel形式に変換し、見た目にも優れたデータ表を作成できます。社内レポートや顧客向けデータの出力、または定期的なデータの自動処理など、さまざまな用途に対応可能です。

Spire.XLS for Java は、高機能かつ柔軟性の高いライブラリとして、Excel出力業務を効率化する強力なツールです。

より詳しい機能やAPIの説明については、Spire.XLS 公式ドキュメント をご覧ください。

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?