1. 概要

Microsoft Excel セルには、文字列、数値、ブール値、数式などのさまざまな種類があります。

このクイックチュートリアルでは、Apache POIを使用して、セルの種類に関係なく、セルの値を文字列として読み取る方法を示します。

2. Apache POI

まず、プロジェクトpom.xmlファイルにpoi依存関係を追加する必要があります。

<dependency>
    <groupId>org.apache.poi</groupId>
    <artifactId>poi</artifactId>
    <version>5.2.0</version>
</dependency>

Apache POIは、ワークブックインターフェイスを使用してExcelファイルを表します。 また、 Sheet Row 、および Cell インターフェイスを使用して、Excelファイル内のさまざまなレベルの要素をモデル化します。 Cell レベルでは、 getCellType()メソッドを使用して、セルタイプを取得できます。 Apache POIは、次のセルタイプをサポートしています。

  • 空欄
  • ブール
  • エラー
  • 方式
  • NUMERIC
  • ストリング

Excelファイルのコンテンツを画面に表示する場合は、生の値ではなく、セルの文字列表現を取得します。 したがって、タイプがSTRINGでないセルの場合、それらのデータを文字列値に変換する必要があります。

3. セル文字列値を取得する

DataFormatterを使用して、Excelセルの文字列値をフェッチできます。 セルに格納されている値のフォーマットされた文字列表現を取得できます。 たとえば、セルの数値が1.234で、このセルのフォーマット規則が小数点以下2桁の場合、文字列表現「1.23」が得られます。

Cell cell = // a numeric cell with value of 1.234 and format rule "0.00"

DataFormatter formatter = new DataFormatter();
String strValue = formatter.formatCellValue(cell);

assertEquals("1.23", strValue);

したがって、 DataFormatter.formatCellValue()の結果は、Excelに表示されるとおりの表示文字列になります。

4. 数式セルの文字列値を取得する

セルのタイプがFORMULAの場合、前のメソッドは、計算された数式値ではなく、元の数式文字列を返します。 したがって、数式値の文字列表現を取得するには、FormulaEvaluatorを使用して数式を評価する必要があります。

Workbook workbook = // existing Workbook setup
FormulaEvaluator evaluator = workbook.getCreationHelper().createFormulaEvaluator();

Cell cell = // a formula cell with value of "SUM(1,2)"

DataFormatter formatter = new DataFormatter();
String strValue = formatter.formatCellValue(cell, evaluator);

assertEquals("3", strValue);

この方法は、すべての細胞タイプに一般的です。 セルタイプがFORMULAの場合、指定されたFormulaEvaluatorを使用して評価します。 それ以外の場合は、評価なしで文字列表現を返します。

5. 概要

この簡単な記事では、タイプに関係なく、Excelセルの文字列表現を取得する方法を示しました。 いつものように、記事のソースコードはGitHubから入手できます。