0

当我将数据发送到 Excel 时,它会忽略某些单元格的合并“属性”,而只会写入它找到的第一个单元格。因此,假设我合并了 A 列和 B 列,并且我将数据发送到 A 列和 C 列,它实际上拆分了合并的列,所以我留下了一个空列 B。

这是一些上下文代码(一些变量保持通用):

Range cells = this.Worksheet.Cells;
Range cell = (Range)cells[rowIndex, columnIndex];
Boolean merged = (Boolean)cell.MergeCells;        //Here I am trying to determine if the
                                                  //cell is merged.

我的问题是 .MergeCells 总是返回 false。我在这里做错了什么?我知道在 Excel 工作表中,单元格是合并的。

4

2 回答 2

0

问题是您正在转换为布尔值,并且 MergeCells 并不总是保证给您返回布尔值,如最近的问题所述:如何使用 MS interop excel 在 c# 中检测合并的单元格。您还需要检查 null 的值 - 请参阅链接的问题以了解如何执行此操作。

假设

因此,您的代码可能发生的情况是 null 值强制转换为 false,即使 null 值实际表明该范围内有合并的单元格。

于 2020-03-24T14:51:55.003 回答
-1

答案是:你的代码是正确的。

Boolean merged = (Boolean)cell.MergeCells; //Cast from dynamic{bool} to bool

这对我有用(Windows 7 上的 Excel 2013)。我在自己的测试中注意到了这两个值truefalse

所以也许你的工作表的单元格不包含合并的单元格!?

于 2016-05-20T15:40:03.867 回答