在运行时设置Cell Datatype,删除apache poi中的单元格数据

时间:2011-08-05 16:11:26

标签: apache-poi

我有java代码使用apache读取excel文件poi.i有一些要求,我在运行时读取单元格数据时将Cell数据类型设置为String。对于前

之前:    cellData.getStringCellValue() --> "Ramki"

后:    cellData.setCellType(Cell.CELL_TYPE_STRING); System.out.println("The cell data is: " + cellData.getStringCellValue()); ---> ""

我们可以在运行时更改单元格数据类型。

我正在使用apache POI 3.7

请帮助我。

谢谢, 拉姆金。

1 个答案:

答案 0 :(得分:1)

如果我理解正确的话,你所追求的基本上是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() + ")");
}