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了两次,后面的会把前面的覆盖。
这就造成了有值的时候没格式,而有格式的时候没值。