我需要生成的CodeKey
是excel值的two columns
的组合,并且这些列中的值可以是Boolean
,String
,Numeric
或所有这些的组合。
现在,我可以遍历if/else loop
并检查每个条件,但是这样做是一种有效的方法。
例如:
如果我有ExCode = 7V
和PrCode = A:
,则我的CodeKey应该是7VA:
ExCode PrCode
6D: A:
6R TR
7V 6K
我要做的就是分别将CodeKey生成为
6D:A:
,6RTR
和7V6K
。不想做类似的事情:
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);
}