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

 

你可能感兴趣的:(Excel)