POI中设置Excel单元格的类型
1)情景描述:为了实现Excel中Column之间的联动关系,需要把某列单元格的类型置为Text
?
2)初次解决方案中的错误(红色标注):
String sheetName = dataValidation.getSheetName();
HSSFSheet dataSheet = workBook.createSheet(sheetName);
HSSFCellStyle cellTxtStyle = workBook.createCellStyle();
cellTxtStyle.setDataFormat(HSSFDataFormat.getBuiltinFormat("text"));
int rowNum = 0;
for (int i = 0; i < valueList.length; i++) {
????? if (valueList[i][0] != null && valueList[i][0].length() > 0
?????????????????&& valueList[i][1] != null && valueList[i][1].length() > 0) {
????????? HSSFRow row = dataSheet.createRow(rowNum);
??????????row.createCell(0).setCellValue(valueList[i][0]);
????????? row.createCell(0).setCellStyle(cellTxtStyle);
????????? row.createCell(1).setCellValue(valueList[i][1]);
????????? row.createCell(1).setCellStyle(cellTxtStyle);
????????? rowNum++;
????? }
};
?
3)正确解法:
????HSSFRow row = dataSheet.createRow(rowNum);
????HSSFCell cell = row.createCell(0);
????cell.setCellValue(valueList[i][0]);
????cell.setCellStyle(cellTxtStyle);
????row.createCell(1).setCellValue(valueList[i][1]);
?
4)原因分析:
一个cell被create了两次,后面的会把前面的覆盖。
这就造成了有值的时候没格式,而有格式的时候没值。
?