当列合并单元格时,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中的所有内容都显示出来。 (内容只是文本“好你好世界”。)

恐怕没有这一套。 但是,有一种方法可以做到:

  1. 将内容插入到尚未合并的左上angular单元格中。

  2. 保存此单元格列的当前宽度。

  3. 自动适应列。

  4. 保存新的列宽。

  5. 将列宽重置为您在步骤2中保存的内容。

  6. 合并您要合并的单元格。

  7. 总计所有合并列的宽度,但最后一个。

  8. 从步骤4中保存的宽度中减去此总数。

  9. 将最后一个合并列的宽度设置为步骤8的结果。

更一般地说,您可以按照您认为合适的方式将合并列中第4步的总自动拟合宽度分开。

要做到这一点,你需要使用ExcelColumn.AutoFitExcelColumn.Width (和ExcelWorksheet.Column抓取ExcelColumn对象)。

但最简单的…

如果您的内容是静态的(或者至less是dynamic的,但是长度不能太长),那么您可以简单地为所讨论的列设置合理的固定宽度,然而您可以根据需要分配。