c#Word查找含有某个字段的表格,并删除这个字段的所在行

时间:2022-06-12 15:05:53
网上给的答案都是遍历word中的所有表格,根据内容删除当前行,这个很容易实现,但是这个是对于规则的表格的简单操作,但是如果这个表格中含有合并项则会立即报错,有没有更好的解决办法啊。
  我要实现的功能:删除word含有合并项表格中的空白单元格。
for (int tablePos = 1; tablePos <= oDoc.Tables.Count; tablePos++)
        {
            Microsoft.Office.Interop.Word.Table nowTable = oDoc.Tables[tablePos];
            tableMessage+= string.Format("第{0}/{1}个表:<br/>", tablePos, oDoc.Tables.Count);
            //Response.Write(nowTable.Rows.Count + "<br/>");
            //Response.Write(nowTable.Columns.Count); 
 for (int rowPos = 1; rowPos <= nowTable.Rows.Count; rowPos++)
            {
               
                for (int columPos = 1; columPos <=nowTable.Columns.Count; columPos++)
                {
                    context = nowTable.Cell(rowPos, columPos).Range.Text.Trim();
                    if (context != "\a")
                    {
                        context = context.Remove(context.Length - 2, 2);

          if (context == "\a")
                    {
                        nowTable.Rows[rowPos].Delete();
                        columPos = nowTable.Columns.Count;
                    }
}
}
  但是这个每次只能删除一行,并且还是规则的,请各位大神帮忙啊。

2 个解决方案

#1


前面你说是删除整一行,后面又要删除空白的单元格,搞不清你到底想删哪个。
假设你要删除行,如果空白的是合并的单元格,删除的是最上面,那遍历再判断是否为空操作就好了。

#2


不明白你到底想实现的是什么功能,贴点数据出来呗

比如如果有一个单元格是空白的,这一行其他单元格有数据,整行都删除吗
还是整行都是空白才删除?

如果合并单元格是空的,那么所有涉及到的行都删除吗,还是只删除空白的那一行,其他行重新合并?

#1


前面你说是删除整一行,后面又要删除空白的单元格,搞不清你到底想删哪个。
假设你要删除行,如果空白的是合并的单元格,删除的是最上面,那遍历再判断是否为空操作就好了。

#2


不明白你到底想实现的是什么功能,贴点数据出来呗

比如如果有一个单元格是空白的,这一行其他单元格有数据,整行都删除吗
还是整行都是空白才删除?

如果合并单元格是空的,那么所有涉及到的行都删除吗,还是只删除空白的那一行,其他行重新合并?