C#Interop Excel:检查一个区域是否只包含一个合并单元格
我签出了,它确实确定了一个区域是否包含合并的单元格。但是,我想确定一个区域是否包含一个合并的单元格。下面是我的excel工作表的外观(顶部和左侧的字母分别是列号和行号): 正如您所看到的,有两个合并的行紧挨着彼此。因此,mergeCells将为true: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
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++;
}