rt = new XSSFRichTextString("");
break;
case STRING:
- STCellType.Enum xmlbeanCellType = _cell.getT();
- if (xmlbeanCellType == STCellType.INLINE_STR) {
- if(_cell.isSetIs()) {
- //string is expressed directly in the cell definition instead of implementing the shared string table.
- rt = new XSSFRichTextString(_cell.getIs());
- } else if (_cell.isSetV()) {
- //cached result of a formula
- rt = new XSSFRichTextString(_cell.getV());
- } else {
- rt = new XSSFRichTextString("");
- }
- } else if (xmlbeanCellType == STCellType.STR) {
- //cached formula value
- rt = new XSSFRichTextString(_cell.isSetV() ? _cell.getV() : "");
- } else {
- if (_cell.isSetV()) {
- try {
- int idx = Integer.parseInt(_cell.getV());
- rt = (XSSFRichTextString)_sharedStringSource.getItemAt(idx);
- } catch(Throwable t) {
- rt = new XSSFRichTextString("");
- }
- } else {
- rt = new XSSFRichTextString("");
- }
- }
+ rt = findStringValue();
break;
case FORMULA: {
CellType cachedValueType = getBaseCellType(false);
if (cachedValueType != CellType.STRING) {
throw typeMismatch(CellType.STRING, cachedValueType, true);
}
- rt = new XSSFRichTextString(_cell.isSetV() ? _cell.getV() : "");
+ rt = findStringValue();
break;
}
default:
return rt;
}
+ private XSSFRichTextString findStringValue() {
+ XSSFRichTextString rt;
+ STCellType.Enum xmlbeanCellType = _cell.getT();
+ if (xmlbeanCellType == STCellType.INLINE_STR) {
+ if(_cell.isSetIs()) {
+ //string is expressed directly in the cell definition instead of implementing the shared string table.
+ rt = new XSSFRichTextString(_cell.getIs());
+ } else if (_cell.isSetV()) {
+ //cached result of a formula
+ rt = new XSSFRichTextString(_cell.getV());
+ } else {
+ rt = new XSSFRichTextString("");
+ }
+ } else if (xmlbeanCellType == STCellType.STR) {
+ //cached formula value
+ rt = new XSSFRichTextString(_cell.isSetV() ? _cell.getV() : "");
+ } else {
+ if (_cell.isSetV()) {
+ try {
+ int idx = Integer.parseInt(_cell.getV());
+ rt = (XSSFRichTextString)_sharedStringSource.getItemAt(idx);
+ } catch(Throwable t) {
+ rt = new XSSFRichTextString("");
+ }
+ } else {
+ rt = new XSSFRichTextString("");
+ }
+ }
+ return rt;
+ }
+
@Override
protected void setCellValueImpl(String value) {
setCellValueImpl(new XSSFRichTextString(value));
}
}
+ @Test
+ void bug66365() throws Exception {
+ try (XSSFWorkbook wb = openSampleWorkbook("66365.xlsx")) {
+ XSSFSheet sheet1 = wb.getSheetAt(0);
+ assertEquals(sheet1.getRow(0).getCell(0).getStringCellValue(),
+ sheet1.getRow(0).getCell(1).getStringCellValue());
+ assertEquals(sheet1.getRow(1).getCell(0).getStringCellValue(),
+ sheet1.getRow(1).getCell(1).getStringCellValue());
+ }
+ }
+
private static final int INDEX_NOT_FOUND = -1;
private static boolean isEmpty(CharSequence cs) {