当前位置: 首页 > 知识库问答 >
问题:

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

能业
2023-03-14

我正在用ApachePOI创建一个excel文件,excel已经生成,但我无法根据我发布的代码中的单元格值来调整列

这就是我在excel中创建标题的方式

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);
            }

麻烦你帮我调一下栏目,我是阿帕契坡新手

共有1个答案

晋越彬
2023-03-14

您可以使用HSSFSheet。autoSizeColumn(columnNumber)

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

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

示例代码

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

注意-对于所有要对齐的列和对工作表的调用,必须分别执行此操作。autoSizeColumn(columnNumber)应在将数据填入excel后进行。在填充数据之前调用不会产生任何效果。

 类似资料:
  • 我尝试过自动调整我使用Jython Apache POI制作的Excel列的大小。我找到了这个线程:Apache POI Excel-如何配置要扩展的列?,但我仍然搞不清楚。 我尝试添加“sheet1.autoSizeColumn(1)”,但它不会改变任何东西。在每个可用列上调用它不是更好吗,因为为什么不希望每个列的格式都很好呢? 也许这在Jython中是不可能的? 恭喜你,克里斯托夫。

  • 我有一个要求,需要将数据验证添加到整个列中,而不是特定的单元格中。我查阅了ApachePOI的文档,发现了下面的示例 但是上面的例子为特定的单元格创建了一个下拉数据验证。在这种情况下,行0,列0。列中的其余单元格没有验证。但是在实际的excel文件中,我们可以这样做,所以这应该是可能的。我尝试并搜索了很多,但无法找到解决方案。请帮助...

  • 问题内容: 我有一个子类,可以在其上添加按钮,标签,表格等。要在屏幕上显示,请使用: 但是,当我调整窗口大小时,面板的大小不会改变。即使调整了尺寸,如何使面板的尺寸与窗口的尺寸相同? 问题答案: 您可以设置一个类似于BorderLayout的布局管理器,然后更具体地定义面板应该放置的位置: 这会将面板置于框架的中央区域,并在调整框架大小时自动增长。

  • 问题内容: 我使用以下代码来自动调整电子表格中的列大小: 问题是,如果大型电子表格的行数超过3000行,则需要花10分钟以上的时间来自动调整每一列的大小。但是,对于小型文档而言,它运行得非常快。有什么可以帮助实现自动化以更快地工作的吗? 问题答案: 对我有用的解决方案: 可以避免合并区域,所以我可以遍历其他单元格并最终自动调整为最大的单元格,如下所示: 其中1.14388是“ Serif”字体和2

  • 我正在努力设置一个组合框(在 Excel VBA 中),以便根据它包含的最长字符串的长度自动调整其宽度。 我正在尝试创建一个下拉列表(使用名为“WorksheetSelectionForm”的表单中的组合框),一旦打开特定工作簿,该列表就会出现在屏幕上,并允许用户选择要打开的工作簿工作表中的哪一个。 我希望组合框的宽度调整为下拉列表中最长文本字符串的长度。目前,我的下拉列表包含三个项目(工作簿中当

  • 本文向大家介绍iframe如何自动调整高度?相关面试题,主要包含被问及iframe如何自动调整高度?时的应答技巧和注意事项,需要的朋友参考一下 未跨域时,在iframe中利用他的父窗口对象将本页面的滚动高度设置给iframe的height 跨域时,在iframe中将自己的的滚动高设置在本页面内的一个隐藏于父页面不跨域的iframe的hash值, 在隐藏的iframe中将值取出,同未跨域一样设置到要