C#Interop Excel:检查一个区域是否只包含一个合并单元格

C#Interop Excel:检查一个区域是否只包含一个合并单元格,c#,excel,merge,interop,cells,C#,Excel,Merge,Interop,Cells,我签出了,它确实确定了一个区域是否包含合并的单元格。但是,我想确定一个区域是否包含一个合并的单元格。下面是我的excel工作表的外观(顶部和左侧的字母分别是列号和行号): 正如您所看到的,有两个合并的行紧挨着彼此。因此,mergeCells将为true: bool mergeCells = xlWorksheet.Range[xlWorksheet.Cells[/*row*/1, /*column*/1], xlWorksheet.Cells[/*row*/1, /*column*/3]].Me

我签出了,它确实确定了一个区域是否包含合并的单元格。但是,我想确定一个区域是否包含一个合并的单元格。下面是我的excel工作表的外观(顶部和左侧的字母分别是列号和行号):

正如您所看到的,有两个合并的行紧挨着彼此。因此,mergeCells将为true:

bool mergeCells = xlWorksheet.Range[xlWorksheet.Cells[/*row*/1, /*column*/1], xlWorksheet.Cells[/*row*/1, /*column*/3]].MergeCells;
但是,如果我这样格式化excel单元格,mergeCells将为false:

    1   2   3   4   5
  +-------+---+-------+
1 | Apple | G | Orange|
  +---+---+---+-------+
2 | 1 | 2 | 3 | 4 | 5 |
  +---+---+---+---+---+
这是我项目中的所有代码。它获取每个顶部单元格的宽度:

    List<int> ColumbWidth = new List<int>();

    int i = 0;
    int row = 1;
    int ColLeft = 1;
    int ColRight = 1;

    while (xlWorksheet.Cells[row, ColRight].Value2 != null)
    {
        object mergeCells = xlWorksheet.Range[xlWorksheet.Cells[row, ColLeft], xlWorksheet.Cells[row, ColRight]].MergeCells;

        if (ColumbWidth.Count != 0 && mergeCells != DBNull.Value && (bool)mergeCells) //still reading merged column
        {
            ColumbWidth[i]++;
        }
        else
        {
            ColumbWidth.Add(1);

            if (ColumbWidth.Count != 1)
            {
                i++;
                ColLeft = ColRight;
            }
        }

        ColRight++;
    }
List ColumbWidth=new List();
int i=0;
int行=1;
int ColLeft=1;
int ColRight=1;
while(xlsheet.Cells[row,ColRight].Value2!=null)
{
对象mergeCells=xlWorksheet.Range[xlWorksheet.Cells[row,ColLeft],xlWorksheet.Cells[row,ColRight]].mergeCells;
if(ColumbWidth.Count!=0&&mergeCells!=DBNull.Value&&(bool)mergeCells)//仍在读取合并列
{
哥伦布宽度[i]++;
}
其他的
{
第(1)款;
if(ColumbWidth.Count!=1)
{
i++;
ColLeft=ColRight;
}
}
ColRight++;
}
    List<int> ColumbWidth = new List<int>();

    int i = 0;
    int row = 1;
    int ColLeft = 1;
    int ColRight = 1;

    while (xlWorksheet.Cells[row, ColRight].Value2 != null)
    {
        object mergeCells = xlWorksheet.Range[xlWorksheet.Cells[row, ColLeft], xlWorksheet.Cells[row, ColRight]].MergeCells;

        if (ColumbWidth.Count != 0 && mergeCells != DBNull.Value && (bool)mergeCells) //still reading merged column
        {
            ColumbWidth[i]++;
        }
        else
        {
            ColumbWidth.Add(1);

            if (ColumbWidth.Count != 1)
            {
                i++;
                ColLeft = ColRight;
            }
        }

        ColRight++;
    }