gpt4 book ai didi

c# - EPPlus - AutoFitColumns() 方法在列具有合并单元格时失败

转载 作者:太空狗 更新时间:2023-10-29 18:29:14 24 4
gpt4 key购买 nike

我想知道是否有人想出解决此问题的方法。我注意到 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 行中的单元格,但 AutoFitColumns() 方法会忽略该特定单元格。

如有任何帮助,我们将不胜感激。

最佳答案

基本上...

AutoFitColumnsdocumented忽略合并的单元格。它不是失败,至少在有缺陷的意义上是这样。

Excel 中的自动调整也会忽略合并的单元格。

显然是通过 Excel 2007,you cannot use the AutoFit feature for rows or columns that contain merged cells完全没有。

我只用 Excel 2013 测试过,它的行为似乎有所不同:

  • 自动调整行会忽略该行中的所有行合并单元格。

  • 自动调整列会忽略该列中的所有列合并单元格。

换句话说,您可以在具有合并单元格的行和列中使用自动调整,它只会忽略沿您自动调整的同一维度合并的任何单元格。

AutoFit w/r/t 合并单元格的预期效果? (+ 解决方法)

最后,我不确定我是否了解自动调整合并单元格的意义。例如,假设您在 A1:B1 处有一个合并单元格,其内容填充了默认的两列宽度。

如果您在 A 列上自动调整,应该会发生什么? A 列是否应该变得足够宽以适应所有 A1:B1,有点像将合并的单元格视为其内容仅存在于左上角的原始单元格 A1 中?这可能是合理的,因为我不能立即看出在某些情况下是否暗示奇怪的行为。

如果需要类似的东西,我会插入内容,自动调整,然后才合并。

但是如果你想自动适应 B 列,在这种情况下怎么办:

enter image description here

在这里,您可能希望 B 列足够宽,以便显示 A1:B1 中的所有内容。 (内容只是文本“well hello world”。)

恐怕没有单线的。不过,这是一种方法:

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

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

  3. 自动调整列。

  4. 保存新的列宽。

  5. 将列宽重置为您在第 2 步中保存的值。

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

  7. 总计除最后一列之外的所有合并列的宽度。

  8. 从您在第 4 步中保存的宽度中减去这个总数。

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

更一般地说,您可以按照您认为合适的任何方式在合并的列中拆分来自第 4 步的总自动调整宽度。

要做到这一切,您需要使用 ExcelColumn.AutoFitExcelColumn.Width(以及 ExcelWorksheet.Column 来获取ExcelColumn 对象)。

但最简单的...

如果您的内容是静态的(或者至少是动态的但长度不太可变),您可以简单地为相关列设置合理的固定宽度,按您喜欢的方式分布。

关于c# - EPPlus - AutoFitColumns() 方法在列具有合并单元格时失败,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18894671/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com