读书人

POI中设立Excel单元格的类型

发布时间: 2012-11-20 09:55:43 作者: rapoo

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

?

读书人网 >软件架构设计

热点推荐