プレーンテキストデータを構造化された Excel ワークブックに変換することは、情報の分析や共有が必要な Java 開発者にとって頻繁に行われるタスクです。 Conholdate.Total for Java は、任意のサーバーまたはデスクトップ環境での Java ワークフローにおいて、TXT を XLSX に変換するプロセスを簡素化する強力な SDK です。本ガイドでは、ライブラリのセットアップ方法、各コーディング手順の解説、変換オプションの検討、そして大容量ファイルを効率的に処理するためのパフォーマンスヒントの適用方法を学びます。

開始前の準備: 前提条件とインストール

このチュートリアルを実行するには、以下が必要です:

  • Java Development Kit 8 以上
  • IntelliJ IDEA や Eclipse などの IDE
  • 依存関係管理のための Maven
  • SDK アーティファクトをダウンロードするためのインターネットアクセス

Conholdate Maven リポジトリと SDK の依存関係を pom.xml に追加します:

<repositories>
  <repository>
    <id>conholdate-repo</id>
    <name>Conholdate Maven Repository</name>
    <url>https://repository.conholdate.com/repo/</url>
  </repository>
</repositories>

<dependency>
  <groupId>com.conholdate</groupId>
  <artifactId>conholdate-total</artifactId>
  <version>24.9</version>
  <type>pom</type>
</dependency>

最新の SDK パッケージを公式ページからダウンロードしてください: Conholdate.Total for Java をダウンロード。依存関係が解決されたら、コーディングを開始できる状態になります。次のセクションでは、実装をステップバイステップで解説します。

ステップバイステップで構築: JavaでTXTをXLSXに変換

ステップ 1: 入力ファイルが存在するか確認

まず、ソースのTXTファイルが存在することを確認してください。コードはファイルパスをチェックし、ファイルが見つからない場合は中止します。

String inputPath = "sample.txt";
File inputFile = new File(inputPath);
if (!inputFile.exists() || !inputFile.isFile()) {
    System.err.println("Input file not found: " + inputPath);
    return;
}

ステップ 2: 変換オプションの設定

SDKがTXTデータをどのように解釈するかを構成します。区切り文字(タブ、カンマ、セミコロンなど)を設定し、元の書式を保持し、大きなファイルのためにメモリキャッシュを有効にできます。

XlsxConvertOptions options = new XlsxConvertOptions();
options.setDelimiter('\t');               // Tab‑delimited example
options.setPreserveOriginalFormatting(true);
options.setEnableMemoryCache(true);

詳細については、XlsxConvertOptions API リファレンスをご覧ください。

ステップ 3: 変換を実行

入力ファイルで Conversion インスタンスを作成し、convert を呼び出して XLSX 出力を生成します。

String outputPath = "sample.xlsx";
try (Conversion conversion = new Conversion(inputFile)) {
    conversion.convert(outputPath, options);
} catch (ConversionException | IOException e) {
    System.err.println("Conversion failed: " + e.getMessage());
    e.printStackTrace();
    return;
}

Conversion クラスは、裏で重い処理を担当し、TXT ファイルの各行をスプレッドシートの行と列に変換します。

ステップ 4: 出力ファイルの確認と結果のログ記録

変換後、XLSX ファイルが作成され、空でないことを確認してください。

File outputFile = new File(outputPath);
if (outputFile.exists() && outputFile.isFile() && outputFile.length() > 0) {
    System.out.println("Conversion succeeded. Output file: " + outputPath);
} else {
    System.err.println("Conversion completed but output file is missing or empty.");
}

ステップ 5: Apache POI を使用したクイック検証

オプションで、Apache POI を使用して生成されたワークブックを読み取り、シート数と行数を確認します。

try (XSSFWorkbook workbook = new XSSFWorkbook(Files.newInputStream(Paths.get(outputPath)))) {
    int sheetCount = workbook.getNumberOfSheets();
    System.out.println("Workbook contains " + sheetCount + " sheet(s).");
    if (sheetCount > 0) {
        Sheet sheet = workbook.getSheetAt(0);
        int rowCount = sheet.getPhysicalNumberOfRows();
        System.out.println("First sheet row count: " + rowCount);
    }
} catch (IOException ex) {
    System.err.println("Failed to read generated XLSX for validation: " + ex.getMessage());
}

変換が完了したら、追加の構成オプションを検討したり、プロセスを拡張して多数のファイルをバッチ変換することができます。

JavaでTXTをXLSXに変換する完全な実装例

次のコードは、Conholdate.Total for Java を使用した、TXT を XLSX に変換する Java ワークフローの完全な実装を示しています。

import com.groupdocs.conversion.Conversion;
import com.groupdocs.conversion.options.convert.XlsxConvertOptions;
import com.groupdocs.conversion.exceptions.ConversionException;

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

import java.io.File;
import java.io.IOException;
import java.nio.file.Files;
import java.nio.file.Paths;

public class TxtToXlsxConverter {
    public static void main(String[] args) {
        // Input TXT file and desired XLSX output paths
        String inputPath = "sample.txt";
        String outputPath = "sample.xlsx";

// Verify that the input file exists
        File inputFile = new File(inputPath);
        if (!inputFile.exists() || !inputFile.isFile()) {
            System.err.println("Input file not found: " + inputPath);
            return;
        }

// Configure conversion options
        XxlsxConvertOptions options = new XlsxConvertOptions();
        // Set delimiter (tab, comma, semicolon, etc.). Here we use tab.
        options.setDelimiter('\t');
        // Preserve original formatting where possible
        options.setPreserveOriginalFormatting(true);
        // Enable memory cache to improve performance on large files
        options.setEnableMemoryCache(true);

// Perform the conversion
        try (Conversion conversion = new Conversion(inputFile)) {
            conversion.convert(outputPath, options);
        } catch (ConversionException | IOException e) {
            System.err.println("Conversion failed: " + e.getMessage());
            e.printStackTrace();
            return;
        }

// Validate that the XLSX file was created and is not empty
        File outputFile = new File(outputPath);
        if (outputFile.exists() && outputFile.isFile() && outputFile.length() > 0) {
            System.out.println("Conversion succeeded. Output file: " + outputPath);

// Optional quick validation using Apache POI
            try (XSSFWorkbook workbook = new XSSFWorkbook(Files.newInputStream(Paths.get(outputPath)))) {
                int sheetCount = workbook.getNumberOfSheets();
                System.out.println("Workbook contains " + sheetCount + " sheet(s).");
                if (sheetCount > 0) {
                    Sheet sheet = workbook.getSheetAt(0);
                    int rowCount = sheet.getPhysicalNumberOfRows();
                    System.out.println("First sheet row count: " + rowCount);
                }
            } catch (IOException ex) {
                System.err.println("Failed to read generated XLSX for validation: " + ex.getMessage());
            }
        } else {
            System.err.println("Conversion completed but output file is missing or empty.");
        }
    }
}

注: このコード例はコア機能を示しています。プロジェクトで使用する前に、ファイルパスや設定値を実際の環境に合わせて更新し、必要な依存関係がすべて正しくインストールされていることを確認し、開発環境で徹底的にテストしてください。問題が発生した場合は、公式ドキュメントをご参照いただくか、サポートチームにお問い合わせください。

変換オプションの構成

SDK は、変換プロセスを微調整できるいくつかのオプションを提供します:

  • Delimiter - SDK が TXT ファイルの各行を列に分割する方法を決定します。例ではタブ文字 ('\t') を使用しています。カンマ (',') やソース データに合わせた他の文字に変更できます。
  • PreserveOriginalFormatting - true に設定すると、SDK は結果の XLSX セル内で元のテキストスタイル(太字や斜体など)を保持しようとします。
  • EnableMemoryCache - このフラグを有効にすると、メモリ内に中間データをキャッシュすることで、大きなファイルのパフォーマンスが向上します。

これらのオプションは、上記のステップバイステップ セクションに示されているように、XlsxConvertOptions オブジェクトを介して構成されます。

変換パフォーマンスの最適化

大きな TXT ファイルを変換する際は、次のヒントを考慮してください。

  1. Enable Memory Cache - options.setEnableMemoryCache(true); はディスク I/O を削減し、処理速度を向上させます。
  2. Stream the Input - SDK はソースファイルをストリーミング方式で読み取りますが、変換前にファイル全体を String にロードしないようにしてください。
  3. Reuse Conversion Instances - 多数のファイルを変換する必要がある場合、スレッドごとに単一の Conversion オブジェクトを作成し、各ファイルで再利用してオブジェクト生成のオーバーヘッドを最小限に抑えます。
  4. Adjust JVM Heap - 非常に大きなデータセットの場合、JVM ヒープサイズ(-Xmx2g 以上)を増やして OutOfMemoryError を防止してください。

これらの実践を適用することで、Java における TXT から XLSX への変換操作は、ギガバイトサイズのソースファイルでも高速かつメモリ効率が高いまま維持されます。

まとめ

JavaでConholdate.Total for Javaを使用してTXTをXLSXに変換する方法をご覧いただきました。SDKは区切り文字の解析、書式の保持、メモリ管理を処理し、Microsoft Officeに依存せずにプロフェッショナルなExcelブックを生成できます。実運用では適切なライセンスを取得することを忘れないでください。価格の詳細は価格ページで確認でき、テスト用の一時ライセンスは一時ライセンスページから取得できます。本ガイドのコードとヒントを活用すれば、任意のJavaアプリケーションにTXT‑to‑XLSX変換を組み込み、バッチ処理を自動化し、エンドユーザーが簡単に操作できる形式でデータを提供できます。

よくある質問

Java SDKを使用してTXTをXLSXに変換するにはどうすればよいですか?

Conversion クラスと XlsxConvertOptions を組み合わせて使用します。目的の区切り文字を設定し、メモリキャッシュを有効にして、conversion.convert(outputPath, options) を呼び出します。完全な例は「完全な動作例」セクションに記載されています。

カスタム解析コードを書かずに、区切り付きTXTファイルをXLSXに変換できますか?

はい。SDK の XlsxConvertOptions.setDelimiter メソッドを使用すると、区切り文字(カンマ、タブ、セミコロンなど)を指定できるため、Java で単一の API 呼び出しだけで区切り付き TXT を XLSX に変換できます。

単一のTXTソースからマルチ‑シートブックを作成することは可能ですか?

基本的な例では1枚のシートが作成されますが、入力データをプログラムで分割し、各セグメントごとに個別の変換を呼び出すことができます。その後、Apache POI または SDK の高度な機能を使用して、生成されたシートをマルチ‑シート XLSX ブックに結合します。

もっと読む