我需要生成的CodeKey是excel值的two columns的组合,并且这些列中的值可以是BooleanStringNumeric或所有这些的组合。

现在,我可以遍历if/else loop并检查每个条件,但是这样做是一种有效的方法。

例如:

如果我有ExCode = 7VPrCode = A:,则我的CodeKey应该是7VA:

 ExCode  PrCode
 6D:     A:
 6R      TR
 7V      6K


我要做的就是分别将CodeKey生成为6D:A:6RTR7V6K

不想做类似的事情:

 if(ExCodeCellValue.getCellType() == Cell.CELL_TYPE_STRING &&
           PrCodeCellValue.getCellType() == Cell.CELL_TYPE_STRING){
            System.out.println("Combined String Values: "+ExCodeCellValue.getStringValue()+PrCodeCellValue.getStringValue());
        }


由于会有很多if/else不必要的东西来生成codeKey,因此有其他有效的解决方案,或者api中是否有任何POI对此情况有用?

最佳答案

我认为您应该能够使用DataFormatter.formatCellValue(cell),它会给您一个与Excel为单元格显示的字符串匹配的字符串。

这样,您将看起来像(假设ExCode在第三列,PrCode在第四列)

// Do this once
DataFormatter formatter = new DataFormatter();

// Once per row
for (Row row : sheet) {
  String exCode = formatter.formatCellValue( row.getCell(2) );
  String prCode = formatter.formatCellValue( row.getCell(3) );

  Cell code = row.createCell(4, Cell.CELL_TYPE_STRING);
  code.setCellValue(exCode + prCode);
}

10-08 20:04