Как получить доступ к столбцам в таблице, которые имеют ширину ячейки, отличную от MS Word - PullRequest
5 голосов
/ 23 марта 2011

Я пытаюсь получить ячейки из 1-го столбца в таблице.Получение исключения в «Foreach(Cells c in rng.Tables[1].Columns[1].Cells)», поскольку таблица содержит столбцы со смешанной шириной ячейки.

например: в первой строке 4 ячейки, а во второй строке только 2 ячейки (две ячейки объединены вместе)

Сообщение об ошибке: " Невозможно получить доступ к отдельным столбцамв этой коллекции, потому что таблица имеет смешанную ширину ячейки."

Document oDoc = open word document  
foreach (Paragraph p in oDoc.Paragraphs)  
    {  
    Range rng = p.Range;  
  /* 

  */  
  foreach (Cell c in rng.Tables[1].Columns[1].Cells)  
  {  
     //....  
  }  
 }  

1 Ответ

5 голосов
/ 16 декабря 2011

Вместо использования цикла foreach во втором цикле, вы можете вместо этого использовать цикл for, подобный так, чтобы перебирать все ячейки:

        for (int r = 1; r <= rng.Tables[1].Row.Count; r++)
        {
            for (int c = 1; c <= rng.Tables[1].Columns.Count; c++)
            {
                try
                {
                    Cell cell = table.Cell(r, c);
                    //Do what you want here with the cell
                }
                catch (Exception e)
                {
                    if (e.Message.Contains("The requested member of the collection does not exist."))
                    {
                       //Most likely a part of a merged cell, so skip over.
                    }
                    else throw;
                }
            }
        }
...