如何在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
- C#System.Runtime.InteropServices.COMException(0x800A03EC):从HRESULTexception:0x800A03EC Microsoft.Office.Interop.Excel._Workbook.SaveAs()
- Datagrid excel不适用于多行标题
- 在ClosedXML中,如何按列sorting工作表?
- Excel互操作macros输出/参数
- 我如何从Excel文件读取数据?
- OpenXML可以返回一个公式的结果
- Visual Studio致命错误0x80131c39
- 如何访问ThisAddin.cs文件中的方法
- 在.NET excel插件(XLL)中捕获未处理的exception?