私が正しく理解すれば、基本的にExcelが各セルに表示するテキストです。
この場合、キークラスはDataFormatterになります。これはこれを行います。
POIのExcelExtractorクラスを見てみると、これを実行した例が完全に表示されます。
HSSFCell cell = row.getCell(k);
switch(cell.getCellType()) {
case HSSFCell.CELL_TYPE_STRING:
text.append(cell.getRichStringCellValue().getString());
break;
case HSSFCell.CELL_TYPE_NUMERIC:
text.append(
_formatter.formatCellValue(cell)
);
break;
case HSSFCell.CELL_TYPE_BOOLEAN:
text.append(cell.getBooleanCellValue());
break;
case HSSFCell.CELL_TYPE_ERROR:
text.append(ErrorEval.getText(cell.getErrorCellValue()));
break;
case HSSFCell.CELL_TYPE_FORMULA:
if(outputCellFormulas) {
text.append(cell.getCellFormula());
} else {
switch(cell.getCachedFormulaResultType()) {
case HSSFCell.CELL_TYPE_STRING:
HSSFRichTextString str = cell.getRichStringCellValue();
if(str != null && str.length() > 0) {
text.append(str.toString());
}
break;
case HSSFCell.CELL_TYPE_NUMERIC:
HSSFCellStyle style = cell.getCellStyle();
if(style == null) {
text.append(cell.getNumericCellValue());
} else {
text.append(
_formatter.formatRawCellContents(
cell.getNumericCellValue(),
style.getDataFormat(),
style.getDataFormatString()
)
);
}
break;
case HSSFCell.CELL_TYPE_BOOLEAN:
text.append(cell.getBooleanCellValue());
break;
case HSSFCell.CELL_TYPE_ERROR:
text.append(ErrorEval.getText(cell.getErrorCellValue()));
break;
}
}
break;
default:
throw new RuntimeException("Unexpected cell type (" + cell.getCellType() + ")");
}
あなたがしようとしていることとあなたが抱えている問題は明確ではありません。なぜ、既存のセルタイプを文字列に設定していますか? – Gagravarr
私は数値データと文字列データをコード内で扱いたいと思っています。まず、セルのデータ型が数値かどうかをチェックします。それが数字でない場合は、そのセルタイプを文字列に変更したい(タイプにかかわらず、式、エラー、..など) – Ramki