Как определить, есть ли объединенные ячейки в таблице в текстовом документе с помощью vsto? - PullRequest
0 голосов
/ 31 мая 2019

Есть ли способ узнать, есть ли объединенные ячейки в таблице в текстовом документе?

Когда я путешествовал по текстовому документу в соответствии с таблицами и изменял свойства таблицы и ячейки, моя программная ошибка, потому что некоторые таблицы содержат объединенные ячейки, но если я в соответствии с ячейкой для перемещения, из-за содержимого документа может быть много, это займет много времени, я знаю, что в Excel есть атрибут MergeCells, но слово, если сделатьне имеют этого свойства ...

 Range FR = wordDoc.Range(sRange.Start, sRange.End);
  for (int i = 1; i <= FR.Tables.Count; i++)
                    {
                        //Range IsMerge = FR.Tables[i].Range;
                        //if (IsMerge)
                        //{

                        //}


                        for (int j = 1; j <= FR.Tables[i].Rows.Count; j++)
                        {
                            Range rg = FR.Tables[i].Rows[j].Range;

                            object Replace_String = "^p";       
                            object ms = Type.Missing;
                            object Replace = Microsoft.Office.Interop.Word.WdReplace.wdReplaceAll;
                            object ReplaceWith = "";            
                            rg.Find.Execute(ref Replace_String, ref ms, ref ms, ref ms, ref ms,
                                ref ms, ref ms, ref ms, ref ms, ref ReplaceWith,
                                ref Replace, ref ms, ref ms, ref ms, ref ms);

                            rg.ParagraphFormat.FirstLineIndent = 0;
                            rg.ParagraphFormat.Alignment = WdParagraphAlignment.wdAlignParagraphCenter;
                        }
                    }

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

Ответы [ 2 ]

0 голосов
/ 03 июня 2019

Чтобы проверить, есть ли в таблице объединенные ячейки, вы можете использовать свойство Uniform:

if (FR.Tables[i].Uniform)
{
  //Do actions for the case the table has no merged cells
}
0 голосов
/ 03 июня 2019

Это как проверить таблицы Word в VBA для вертикально или горизонтально объединенных ячеек.Вы должны предвидеть конкретный возвращенный код ошибки и затем реагировать соответствующим образом.Вы можете конвертировать его в C #.

Sub WorkWithTableData()
    Dim doc As Word.Document
    Dim i As Long, tblRow As Row, tblCol As Column
    Set doc = ActiveDocument
    On Error GoTo errHandler
    For i = 1 To doc.Tables.Count
        For Each tblRow In doc.Tables(i).rows
            'do something
        Next tblRow
NextStep:
        For Each tblCol In doc.Tables(i).Columns
            'do something
        Next tblCol
NextTable:
    Next i
    Exit Sub
errHandler:
    Select Case Err
        Case 5991
            MsgBox "Table #" & i & " has vertically merged cells"
            Resume NextStep
        Case 5992
            MsgBox "Table #" & i & " has horizontally merged cells"
            Resume NextTable
        Case Else
            MsgBox "Error " & Err.Number & ": " & _
                Err.Description & " in table #" & i
            Resume NextTable
    End Select
End Sub
...