如何将列设置为';自动调整大小';在使用NPOI创建的Excel文档中?

如何将列设置为';自动调整大小';在使用NPOI创建的Excel文档中?,excel,npoi,Excel,Npoi,是Java POI项目的.NET端口,它允许用户读取和写入Microsoft Excel文档(以及其他Office格式)。NPOI 1.2.2引入了对“自动调整大小”列的支持,从而将列设置为列中最宽单元格条目的宽度。然而,有许多报告表明,这是行不通的。那么有可能吗?我发布这篇文章只是为了回答这个问题,以便提供一个记录。可以使用NPOI自动调整列的大小,但必须在列中而不是在行中添加所有数据。将所有单元格添加到column@columnIndex后,调用 mySheet.AutoSizeColumn

是Java POI项目的.NET端口,它允许用户读取和写入Microsoft Excel文档(以及其他Office格式)。NPOI 1.2.2引入了对“自动调整大小”列的支持,从而将列设置为列中最宽单元格条目的宽度。然而,有许多报告表明,这是行不通的。那么有可能吗?

我发布这篇文章只是为了回答这个问题,以便提供一个记录。可以使用NPOI自动调整列的大小,但必须在列中而不是在行中添加所有数据。将所有单元格添加到column@columnIndex后,调用

mySheet.AutoSizeColumn(columnIndex)

并移到下一列。我找不到其他方法来实现此功能。

正如Yellowfog已经指出的那样,以下方法将起作用

mySheet.AutoSizeColumn(columnIndex)
ISheet mySheet = hssfworkbook.CreateSheet("sheet1");
IRow row = mySheet.CreateRow(0);
ICell cell = row.CreateCell(0);
cell.SetCellValue("foo");
mySheet.AutoSizeColumn(0);
然而,在帖子中出现了一些模糊性。这似乎是一种只在您完成输入数据、样式等之后才起作用的方法,因此这将起作用

mySheet.AutoSizeColumn(columnIndex)
ISheet mySheet = hssfworkbook.CreateSheet("sheet1");
IRow row = mySheet.CreateRow(0);
ICell cell = row.CreateCell(0);
cell.SetCellValue("foo");
mySheet.AutoSizeColumn(0);
但以下内容不会产生任何影响(因为它没有自动调整大小所需的信息)


我没有像你建议的那样“在列中”添加数据,但是方法
AutoSizeColumn(columnIndex)
对我来说非常有效。我想这一定是一个在以后版本中修复的错误,因为我将所有数据添加为行,并使用了上述方法。抱歉,这里不起作用。就说一列吧。添加标题行。指定样式。添加标题文本。再创建一行。指定样式。添加数据(一个很长的数字)。指定
AutoSizeColumn()
。生成Excel文件。打开它。数字中有“E”表示列不够宽。这是数字特有的吗?对于长数字是否自动调整为科学符号?如果添加长字符串而不是长数字,是否会得到相同的结果?1)我尝试先添加列。(即在输入每列时创建行。)这将使除最后一列之外的所有列变为空。当我先添加行,然后添加列(和自动调整大小)时,一切都很顺利。根据我的经验,
mySheet.AutoSizeColumn(columnIndex)类型使用确实有效,但并非在所有情况下都有效。如果列的格式为“表格”,且“过滤器”处于启用状态,则通过双击Excel中的“自动调整大小”不会改变宽度,同时会补偿“过滤器处于启用状态”下拉图标。代码版本将忽略过滤器图标。对于数据或列宽度超过其自动调整为的某个最大宽度的最后一列,它也不能很好地工作。