如何使用vsto判断Word文档中表格中是否存在合并单元格?

时间:2019-05-31 08:26:48

标签: c# .net vsto word

有没有一种方法可以判断Word文档中的表格中是否有合并的单元格?

当我按照表格浏览单词文档并更改表格和单元格属性时,我的程序出错,因为某些表格包含合并的单元格,但是如果我根据该单元格来遍历,则由于文档内容可能很多,这将花费很长时间,我知道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 :(得分:0)

这是如何在VBA中检查Word表中垂直或水平合并的单元格的方法。您必须预料到特定的返回错误代码,然后做出相应的反应。您可以将其转换为C#。

df[ (df[column_name].notnull()) & (df[column_name]!=u'') ].index

答案 1 :(得分:0)

要检查表是否已合并单元格,可以使用Uniform属性:

if (FR.Tables[i].Uniform)
{
  //Do actions for the case the table has no merged cells
}