我想使用EPPlus nuget包在excel中隐藏一列,但它不起作用(它没有隐藏该列)
这是我发现应该可以解决的问题。也许有错误?
worksheet.Column(1).Hidden = true;
我正在使用版本4.5.2.1
答案 0 :(得分:2)
我在打电话
worksheet.Cells.AutoFitColumns();
之后
worksheet.Column(1).Hidden = true;
答案 1 :(得分:1)
显然,根据文档,您可以使用AutoFitColumns(Double MinimumWidth, Double MaximumWidth)
:
根据范围的内容设置列宽。注意:如果不进行任何计算,则将忽略包含公式的单元格。包装和合并的单元格也将被忽略。 隐藏的列被隐藏。
worksheet.Column(1).Hidden = true;
worksheet.Cells.AutoFitColumns(8.43,100); // 8.43 = default width of cells
答案 2 :(得分:1)
截至撰写本文(2019-10-24)时,AutoFitColumns
中的代码试图避免对隐藏的列进行自动拟合,但在辅助方法(SetMinWidth
)被执行后才执行调用会遍历所有设置最小宽度的列,并且Width
设置器会产生副作用,如果宽度非零,则将_hidden
设置为false
,这是使用时AutoFitColumns
的零参数过载。
如果您使用AutoFitColumns
的1或2参数重载来传递最小宽度为零,则列将保持隐藏状态,但您的空列将为零宽度,因此实际上不是解决方法。
这是我暂时使用的扩展方法:
static void AutoFitColumnsAndRehide(this ExcelRangeBase range)
{
range.Reset();
var hiddenColumns = range
.Select(cell => cell.Start.Column)
.Distinct()
.Select(range.Worksheet.Column)
.Where(column => column.Hidden)
.ToList();
range.AutoFitColumns();
foreach (var column in hiddenColumns)
{
column.Hidden = true;
}
}
显然,也可以针对1参数和2参数过载进行调整。