如何在apache POI中自动调整excel中的列

我正在用apache创build一个excel文件poi excel是生成的,但是我不能根据单元格的值调整列我在发布代码我到目前为止所做的

这是我如何在Excel中创build标题

HSSFWorkbook wb = new HSSFWorkbook(); HSSFSheet sheet = wb.createSheet(); sheet.protectSheet("password"); sheet.autoSizeColumn(15); HSSFFont hSSFFont = wb.createFont(); hSSFFont.setFontName(HSSFFont.FONT_ARIAL); hSSFFont.setFontHeightInPoints((short) 8); CellStyle style = wb.createCellStyle(); /* cell style for locking */ CellStyle lockedCellStyle = wb.createCellStyle(); lockedCellStyle.setLocked(true); HSSFRow row = null; HSSFCell cell = null; row = sheet.createRow(0); int headercolumnNo = 0; //1st Column Header for Indicator cell = row.createCell(headercolumnNo); cell.setCellValue(new HSSFRichTextString(listOfActiveCarrierUserHeader.get(0))); style.setWrapText(true); style.setFillForegroundColor(IndexedColors.LIGHT_CORNFLOWER_BLUE.getIndex()); style.setFont(hSSFFont); style.setFillPattern(CellStyle.SOLID_FOREGROUND); cell.setCellStyle(style); headercolumnNo = 1; cell = row.createCell(headercolumnNo); //2nd Column Header for Firstname cell.setCellValue(new HSSFRichTextString(listOfActiveCarrierUserHeader.get(1))); style.setWrapText(true); style.setFillForegroundColor(IndexedColors.LIGHT_CORNFLOWER_BLUE.getIndex()); style.setFont(hSSFFont); cell.setCellStyle(style); headercolumnNo = headercolumnNo + 1; cell = row.createCell(headercolumnNo); //2nd Column Header for Firstname cell.setCellValue(new HSSFRichTextString(listOfActiveCarrierUserHeader.get(2))); style.setWrapText(true); style.setFillForegroundColor(IndexedColors.LIGHT_CORNFLOWER_BLUE.getIndex()); style.setFont(hSSFFont); cell.setCellStyle(style); headercolumnNo = headercolumnNo + 1; and this is how i have populated the values in that excel file for(CarrierActiveUser carrierActiveUser : listOfCarrierUser){ int columnNo = 0; row = sheet.createRow(j + 1); cell = row.createCell(columnNo); if(null != carrierActiveUser.getFistName()){ cell.setCellValue(new HSSFRichTextString(carrierActiveUser.getFistName())); lockedCellStyle.setFont(hSSFFont); cell.setCellStyle(lockedCellStyle); }else{ cell.setCellValue(new HSSFRichTextString(" ")); cell.setCellStyle(lockedCellStyle); } columnNo = columnNo + 1; cell = row.createCell(columnNo); if(null != carrierActiveUser.getLastName()){ cell.setCellValue(new HSSFRichTextString(carrierActiveUser.getLastName())); lockedCellStyle.setFont(hSSFFont); cell.setCellStyle(lockedCellStyle); }else{ cell.setCellValue(new HSSFRichTextString(" ")); cell.setCellStyle(lockedCellStyle); } columnNo = columnNo + 1; cell = row.createCell(columnNo); if(null != carrierActiveUser.getLastName()){ cell.setCellValue(new HSSFRichTextString(carrierActiveUser.getEmailId())); lockedCellStyle.setFont(hSSFFont); cell.setCellStyle(lockedCellStyle); }else{ cell.setCellValue(new HSSFRichTextString(" ")); cell.setCellStyle(lockedCellStyle); } 

请有人帮我调整列,我是新的阿帕奇poi

电流输出

您可以使用HSSFSheet.autoSizeColumn(columnNumber)方法完美地alignment列。

此方法调整列宽以适应内容,请阅读文档 。

设置所有列的所有单元格值后,可以使用此方法,在当前代码中,在for循环之后调用此方法。

示例代码

 sheet.autoSizeColumn(1); sheet.autoSizeColumn(2); 

注意 – 你必须对所有需要alignment的列单独执行此操作,并在将数据填充到excel之后调用sheet.autoSizeColumn(columnNumber) 。 在填充数据之前调用不会有任何影响。