使用Apache POI将单元格内容读取为富文本.使用cell.getRichStringCellValue()方法时处



我想从Excel电子表格中以富格文本而不是字符串的形式读取单元格值,但当单元格类型为数字并且我使用cell.getRichStringCellValue()方法时会引发异常。处理这个问题的好方法是什么?

您需要仔细而亲切地遵循Apache POI文档中列出的方法(谁会想到呢?!)。你会想做一些类似的事情:

import org.apache.poi.ss.usermodel.*;
Workbook wb = WorkbookFactory.create(new File("input.xls"));
Sheet sheet1 = wb.getSheetAt(0);
for (Row row : sheet1) {
    for (Cell cell : row) {
        CellReference cellRef = new CellReference(row.getRowNum(), cell.getColumnIndex());
        System.out.print(cellRef.formatAsString());
        System.out.print(" - ");
        switch (cell.getCellType()) {
            case Cell.CELL_TYPE_STRING:
                RichTextString contents = cell.getRichStringCellValue();
                // TODO Handle contents
                break;
            case Cell.CELL_TYPE_NUMERIC:
                if (DateUtil.isCellDateFormatted(cell)) {
                    Date date = cell.getDateCellValue();
                    // TODO Handle Date value
                } else {
                    double number = cell.getNumericCellValue();
                    // TODO Handle number
                }
                break;
            case Cell.CELL_TYPE_BOOLEAN:
                boolean value = cell.getBooleanCellValue();
                // TODO Handle
                break;
            case Cell.CELL_TYPE_FORMULA:
                // Either get formula, or check last value, or evaluate
                break;
            default:
                // Shouldn't happen
        }
    }
}

然后添加您自己的逻辑来处理内容,现在您已经获取了

最新更新