当列合并单元格时,EPPlus – AutoFitColumns()方法失败
我想知道是否有人提出了解决这个问题的方法。 我注意到,AutoFitColumns()方法在合并单元格的列上失败。 我已经包含了一个基本的代码示例如下:
var cellRange = worksheet.Cells[1, column, 2, column]; cells.Merge = true; cells.Style.HorizontalAlignment = OfficeOpenXml.Style.ExcelHorizontalAlignment.Center; cells.Value = "Some Text Goes Here"; worksheet.Cells.AutoFitColumns();
生成的工作表将使行1和行2中的单元格合并(正确)列variables中的列,但该特定单元格被AutoFitColumns()方法忽略。
任何帮助,将不胜感激。
基本上…
AutoFitColumns
logging为忽略合并的单元格。 至less从缺陷的angular度来说,这并不是失败的。
Excel中的AutoFit也会忽略合并的单元格。
显然,通过Excel 2007, 您不能使用AutoFitfunction的行或包含合并单元格的列 。
我只用Excel 2013进行testing,这似乎有不同的performance:
-
自动适合行会忽略该行中的所有行合并单元格。
-
自动拟合列会忽略该列中所有列合并的单元格。
换句话说,您可以在合并单元格的行和列中使用“自动调整”,它将忽略沿着自动拟合的同一维度合并的所有单元格。
AutoFit w / r / t合并单元格的所需效果? (+解决方法)
最后,我不确定是否看到自动适应合并单元格是否合理。 例如,假设您在A1:B1中有一个合并单元格,其内容填充默认的两列宽度。
如果你自动适应列A,应该发生什么? A列是否应该变得足够宽以适应A1:B1的所有内容,就像处理合并的单元格一样,就好像它的内容只存在于左上angular的原始单元格A1中一样? 这可能是合理的,因为我不能立即看到在某些情况下是否可能隐含奇怪的行为。
如果需要这样的东西,我会插入内容,自动适应,然后才合并。
但是如果你想自动适应B列,在这种情况下:
在这里,您可能希望列B的宽度足够大,以便A1:B1中的所有内容都显示出来。 (内容只是文本“好你好世界”。)
恐怕没有这一套。 但是,有一种方法可以做到:
-
将内容插入到尚未合并的左上angular单元格中。
-
保存此单元格列的当前宽度。
-
自动适应列。
-
保存新的列宽。
-
将列宽重置为您在步骤2中保存的内容。
-
合并您要合并的单元格。
-
总计所有合并列的宽度,但最后一个。
-
从步骤4中保存的宽度中减去此总数。
-
将最后一个合并列的宽度设置为步骤8的结果。
更一般地说,您可以按照您认为合适的方式将合并列中第4步的总自动拟合宽度分开。
要做到这一点,你需要使用ExcelColumn.AutoFit
和ExcelColumn.Width
(和ExcelWorksheet.Column
抓取ExcelColumn
对象)。
但最简单的…
如果您的内容是静态的(或者至less是dynamic的,但是长度不能太长),那么您可以简单地为所讨论的列设置合理的固定宽度,然而您可以根据需要分配。