首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >Apache POI Excel -如何配置要展开的列?

Apache POI Excel -如何配置要展开的列?
EN

Stack Overflow用户
提问于 2011-01-06 09:36:17
回答 12查看 228.4K关注 0票数 115

我正在使用Apache POI API生成excel spreadsheet来输出一些数据。

我面临的问题是,当创建和打开电子表格时,列没有展开,因此一些长文本,如日期格式的文本,不会第一眼就显示出来。

我可以在excel中双击列边框来展开或拖动边框来调整列宽,但可能有20+列,我不可能每次打开电子表格时都手动执行此操作:(

我发现(尽管可能是错误的方法) groupRow()setColumnGroupCollapsed()也许能够做到这一点,但运气不佳。也许我用错了方法。

示例代码片段

代码语言:javascript
复制
        Workbook wb = new HSSFWorkbook();
        CreationHelper createHelper = wb.getCreationHelper();
        //create sheet
        Sheet sheet = wb.createSheet("masatoSheet");

        //not really working yet.... :(
        //set group for expand/collapse
        //sheet.groupRow(0, 10); //just random fromRow toRow argument values...
        //sheet.setColumnGroupCollapsed(0, true);

        //create row
        Row row = sheet.createRow((short)0);
        //put a cell in the row and store long text data
        row.createCell(0).setCellValue("Loooooooong text not to show up first");

当创建此电子表格时,"Looooooong text to not show up first“字符串在单元格中,但由于该列未展开,因此仅显示"Loooooooo”。

如何对其进行配置,使其在打开电子表格时,列已经展开?

EN

回答 12

Stack Overflow用户

回答已采纳

发布于 2011-01-06 14:05:29

将所有数据添加到工作表后,可以在工作表上调用autoSizeColumn(int column)来自动调整列的大小

这里有一个API的链接。

有关更多参考Problem in fitting the excel cell size to the size of the content when using apache poi,请参阅此帖子

票数 197
EN

Stack Overflow用户

发布于 2012-03-13 15:06:19

提示:要使自动调整大小起作用,应在将数据填充到excel后调用

在填充数据之前调用该方法将不起作用。

票数 50
EN

Stack Overflow用户

发布于 2016-02-11 03:56:34

如果要自动调整工作簿中所有列的大小,这里有一个可能有用的方法:

代码语言:javascript
复制
public void autoSizeColumns(Workbook workbook) {
    int numberOfSheets = workbook.getNumberOfSheets();
    for (int i = 0; i < numberOfSheets; i++) {
        Sheet sheet = workbook.getSheetAt(i);
        if (sheet.getPhysicalNumberOfRows() > 0) {
            Row row = sheet.getRow(sheet.getFirstRowNum());
            Iterator<Cell> cellIterator = row.cellIterator();
            while (cellIterator.hasNext()) {
                Cell cell = cellIterator.next();
                int columnIndex = cell.getColumnIndex();
                sheet.autoSizeColumn(columnIndex);
            }
        }
    }
}
票数 44
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/4611018

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档