2017-09-26 59 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]留下拼接區域的上角。在變量中,行和列將是合併區域中行和列的數量 - 所以這是對應該跳過多少行或列的問題的答案。

相關問題