2017-09-26 238 views
0

我试图在C#中编写代码来解析大型Excel表格,该表格并非真正为自动化而设计的,而且它已充满合并单元格。很多时候我知道一个单元格的位置,但需要将另一个单元格的文本拿走几个单元格,但这些单元格可能会合并并跨越多个正常单元格。如何获得单元格数量合并单元格的大小?如何获取合并的Excel单元格的大小

另外,当两者之间的单元格合并时,我怎样才能获得某个单元格的位置?我尝试过Excel.Range.Offset,但是这似乎只计算真实的单元格,而不是合并的单元格(所以如果在它们之间有一个4宽的合并单元格,偏移量2将使我到达该单元格的中间,而不是一个单元格在它的旁边)。

+0

如果您已经尝试过某些功能,请发布您的代码并说明您期望它做什么以及它如何做不到。 – Sach

+0

为什么你需要在C#中获取合并单元格的大小 - 为什么不得到实际的单元格距离并使用它? – NetMage

+0

我不确定你的意思。我需要能够找到一个细胞,比如说2个细胞,所有的细胞都可能合并或不合并。如果我的范围是一个合并单元格,如果我使用cell.Offset [0,1],我将自动移动到下一个单元格,但是如果使用Offset [0,2],那么在此之后我可能不会移动到单元格。 – tfa2773

回答

0

您可以使用下面的代码,以确定合并后的面积大小:

var activeSheet = this.Application.ActiveSheet as Excel.Worksheet; 
    if (activeSheet != null) 
    { 
     var activeCell = activeSheet.Cells[2, 2]; 
     if (activeCell.MergeCells) 
     { 
      if (activeCell.MergeArea != null) 
      { 
       dynamic mergeAreaValue2 = activeCell.MergeArea.Value2; 
       object[,] vals = mergeAreaValue2 as object[,]; 

       if (vals != null) 
       {        
        int rows = vals.GetLength(0); 
        int cols = vals.GetLength(1); 
       }       
      } 
     } 
    } 

假设是Cells[2,2]留下拼接区域的上角。在变量中,行和列将是合并区域中行和列的数量 - 所以这是对应该跳过多少行或列的问题的答案。

相关问题