【问题标题】:How can columns be set to 'autosize' in Excel documents created with NPOI?如何在使用 NPOI 创建的 Excel 文档中将列设置为“自动调整大小”?
【发布时间】:2013-05-01 11:10:06
【问题描述】:

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

【问题讨论】:

  • 根据我的经验,mySheet.AutoSizeColumn(columnIndex); 类型的使用确实有效,但并非在所有情况下都有效。如果您将列格式设置为启用了过滤器的表格,则您在 Excel 中通过双击执行的 AutoSize 会在补偿下拉图标上的过滤器时执行宽度。代码版本忽略过滤器图标。它也不适用于最后一列的数据或列的宽度超过 AutoSizes 到的某个最大宽度。

标签: excel npoi


【解决方案1】:

我发这个只是为了回答它,以便提供记录。 可以使用 NPOI 使列自动调整大小,但是您必须将所有数据添加到列中,而不是添加到行中。将所有单元格添加到列 @ columnIndex 后,您就可以调用

mySheet.AutoSizeColumn(columnIndex)

并移至下一列。我没有找到其他方法可以使此功能正常工作。

【讨论】:

  • 我没有按照您的建议“在列中”添加数据,但是无论如何AutoSizeColumn(columnIndex) 方法对我来说都非常有效。
  • 我认为这一定是一个在更高版本中修复的错误,因为我将所有数据都添加为行并且使用上述方法很好。
  • 对不起在这里不起作用。只说一栏。添加标题行。指定样式。添加标题文本。再创建一行。指定样式。添加数据(长数字)。指定AutoSizeColumn()。生成的 Excel 文件。打开它。数字中有“E” - 表示列不够宽。
  • 这是数字特有的东西吗? IE。它是否会自动调整为科学记数法的长数字?如果添加长字符串而不是长数字,是否会得到相同的结果?
  • 1) 我先尝试添加列。 (即在输入每一列时创建行。)这将使除最后一列之外的所有列变为空白。当我添加行然后添加列(和自动大小)时,一切正常。 stackoverflow.com/questions/45231829/…
【解决方案2】:

正如 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);

但以下将无效(因为它没有自动调整大小的信息)

ISheet mySheet = hssfworkbook.CreateSheet("sheet1");
mySheet.AutoSizeColumn(0);
IRow row = mySheet.CreateRow(0);
ICell cell = row.CreateCell(0);
cell.SetCellValue("foo");

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2018-08-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-10-15
    • 2020-12-27
    • 1970-01-01
    相关资源
    最近更新 更多