如何在c#中使用MS interop excel来检测合并的单元格

我想要检测合并单元格在一行/整个表(最好)。这里是我的代码

Microsoft.Office.Interop.Excel.Application xl = new Microsoft.Office.Interop.Excel.Application(); Microsoft.Office.Interop.Excel.Workbook workbook = xl.Workbooks.Open(source); //Microsoft.Office.Interop.Excel.Worksheet ws = (Microsoft.Office.Interop.Excel.Worksheet)workbook.Sheets[sheetNumber]; Microsoft.Office.Interop.Excel.Worksheet ws = (Microsoft.Office.Interop.Excel.Worksheet)workbook.Worksheets[objInMemory._sheetName]; xl.ScreenUpdating = false; ws.Columns.ClearFormats(); ws.Rows.ClearFormats(); int colCount = ws.UsedRange.Columns.Count; int rowCount = ws.UsedRange.Rows.Count; int strtRow = ws.UsedRange.Rows[1].Row; int strtCol = ws.UsedRange.Columns[1].Column; Microsoft.Office.Interop.Excel.Range objRange = null; 

这段代码也没有

 if (ws.Cells.MergeCells) { } 

也不是这段代码(仅适用于row1)

 for (int j = strtCol; j < strtCol + colCount; j++) { objRange = ws.Cells[strtRow, j]; if (ws.Cells[strtRow, j].MergeCells) { message = "The Sheet Contains Merged Cells"; break; } } 

似乎work..Kindly让我知道如何检查如果一个表/特定范围包含合并单元格。

如果你想检查Range包含合并的单元格,那么MergeCells属性就是你所要的。

如果范围合并,它将返回true 。 如果一个范围包含合并的单元格(即一些被合并,有些不是),它将返回DBNull.Value

所以,这应该适用于整个工作表:

 object mergeCells = ws.UsedRange.MergeCells; var containsMergedCells = mergeCells == DBNull.Value || (bool)mergeCells; 

MergeCells不是一个单元格函数,它是范围函数,所以不是:

 if (ws.Cells[strtRow, j].MergeCells) 

你需要:

 _Excel.Range range = (_Excel.Range) ws.Cells[strtRow, j]; if(range.MergeCells) //returns true if cell is merged or false if its not