ApachePOIでExcelセルの文字列値を取得する
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. セル文字列値を取得する
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でから入手できます。