基本上...
AutoFitColumns
在文档中 说明 忽略合并的单元格。它没有出错,至少在存在缺陷的意义上来说。
Excel自身的AutoFit功能也会忽略合并单元格。
显然,在 Excel 2007 及之前的版本中,无法对包含合并单元格的行或列使用自动调整大小功能。
我只测试了 Excel 2013,它似乎有所不同:
自适应行高度会忽略该行中所有被合并的单元格。
自适应列宽度会忽略该列中所有被合并的单元格。
换句话说,您可以在包含合并单元格的行和列中使用 AutoFit 功能,它将忽略在同一维度上进行合并的任何单元格。
AutoFit 对于合并单元格的期望效果?(+ 解决方法)
最后,我不确定自适应大小功能在合并单元格方面是否有意义。例如,假设您在 A1:B1 中有一个合并单元格,其中的内容填充了默认的两列宽度。
如果您在列 A 上使用 AutoFit,会发生什么?列 A 会变得足够宽以适应 A1:B1 的所有内容吗?这就像把合并单元格视为仅存在于 A1 的左上角原始单元格的内容一样。这可能是合理的,因为我无法立即看到某些情况下可能会出现奇怪的行为。
如果确实需要这样,请先插入内容,然后进行自适应和合并。
但如果您想在类似以下情况下对 B 列进行自适应调整:
![enter image description here](https://istack.dev59.com/QNZVm.webp)
在这里,您可能希望B列变宽,以便显示A1:B1中的所有内容。(内容只是文本“well hello world”)
很遗憾,这没有简单的方法。以下是一种方法:
将内容插入尚未合并的左上方单元格中。
保存此单元格列的当前宽度。
自动调整列宽。
保存新的列宽度。
将列宽度重置为步骤2中保存的宽度。
合并要合并的单元格。
将除最后一个外所有合并列的宽度加起来。
从步骤4中保存的宽度中减去此总和。
将最后一个合并列的宽度设置为步骤8的结果。
更普遍地说,您可以按任何您认为合适的方式将步骤4中的总自适应宽度分配给合并列。
要执行所有这些操作,您需要使用 ExcelColumn.AutoFit
和 ExcelColumn.Width
(以及 ExcelWorksheet.Column
来获取 ExcelColumn
对象)。
但最简单的方法是...
如果您的内容是静态的(或至少在长度上不会太变化),您可以为相关列设置合理的固定宽度,按任何您喜欢的方式分布。
跨所选区域居中
。 - tigeravatarws.Cells["AA"].Value
而不是ws.Cells["AA1"].Value
时,我遇到了相同的错误。 - Muflix