Apache POI autoSizeColumn Resizes Incorrectly

前端 未结 8 986
小鲜肉
小鲜肉 2020-11-29 06:27

I\'m using Apache POI in java to create an excel file. I fill in the data then try to autosize each column, however the sizes are always wrong (and I think consiste

8条回答
  •  我在风中等你
    2020-11-29 07:01

    The following works for me.

    I set the font and use autoSizeColumn() after enter all the data.

        public static XSSFWorkbook createExcel(List resList) {
        XSSFWorkbook hwb = new XSSFWorkbook();
        String[] title = { "1", "2", "3", "4"};
    
        XSSFSheet sheet = hwb.createSheet("dataStats");
    
        XSSFRow firstrow = sheet.createRow(0);
        for (int i = 0; i < title.length; i++) {
            XSSFCell xh = firstrow.createCell(i);
            xh.setCellValue(title[i]);
        }
    
        if (resList == null || resList.size() == 0) {
            return hwb;
        }
    
        for (int i = 0; i < resList.size(); i++) {
            ChannelVodFileInfoList doTemp = resList.get(i);
            XSSFRow row = sheet.createRow(i + 1);
            for (int j = 0; j < title.length; j++) {
                XSSFCell cell = row.createCell(j);
                Font font111 = hwb.createFont();
                font111.setBoldweight(Font.BOLDWEIGHT_NORMAL); 
                XSSFCellStyle cellStyle111 = hwb.createCellStyle();
                cellStyle111.setFont(font111);
                cell.setCellStyle(cellStyle111);
    
                if (j == 0) { 
                    cell.setCellValue(dateStr);
                } else if (j == 1) {  
                    cell.setCellValue(doTemp.getChannelName()); 
                }else if (j == 2) {  
                    cell.setCellValue(doTemp.getBitrate()); 
                }else if (j == 3) {  
                    cell.setCellValue(doTemp.getWh()); 
                }
             }
    
            for (int j = 0; j < title.length; j++) {
               sheet.autoSizeColumn(j);
            }
    
        return hwb;
    }
    

提交回复
热议问题