2013-02-25 153 views
1

我有合併單元格的問題。如果我在第一個單元格(B3)中有價值,並且此單元格與其他某些單元格(例如C3,D3,E3,F3,F4)合併 - 在Excel文檔中,我只能看到一個值。這很好,但我想從我的GetCellValue函數獲得相同的B3值,當我要求C3,D3,E3,F3值時。如何從使用OpenXML和C的Excel文檔中的合併單元格中獲取值#

我想有必要找到所有合併的單元格列表並從第一個值中讀取值 - 但是如何使用OpenXml來實現這一點?

public string GetCellValue(char ch, int y) 
    { 
     WorksheetPart wsPart = GetWorksheetPart(_sheetName); 
     var addressName = new StringValue(ch + "" + y); 

     Cell cell = wsPart.Worksheet.Descendants<Cell>(). 
      Where(c => c.CellReference.Value == addressName).FirstOrDefault(); 

     if (cell == null) 
      return null; 

     return cell.InnerText; 
    } 

UPDATE:

我已經找到部分解決方案(OpenXML中發現合併列名):

 List<MergeCells> mergeCells; 
     WorksheetPart wsPart = GetWorksheetPart(_sheetName); 
     if (wsPart.Worksheet.Elements<MergeCells>().Count() > 0) 
     { 
      mergeCells = wsPart.Worksheet.Elements<MergeCells>().ToList(); 
      string cells = mergeCells[0].OuterXml; 
     } 
+0

'cell.MergeArea'應該給你的細胞對象B3,即使細胞是C3。 (至少這是對象模型在VBA中允許的,不能確定c#和上一個問題一樣;-)) – 2013-02-25 14:44:46

回答

0
if (wsPart.Worksheet.Elements<MergeCells>().Count() > 0) 
{ 
    MergeCells mergeCells = wsPart.Worksheet.Elements<MergeCells>().First(); 
    foreach (MergeCell mergeCell in mergeCells) 
    { 
     // mergeCell. 
    } 
} 
相關問題