c# - 使用vsto如何判断word文档的表格中是否有合并单元格?
问题描述
有没有办法判断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;
}
}
无法访问此集合中的各个行,因为该表具有垂直合并的单元格。
解决方案
这是在 VBA 中检查 Word 表格中垂直或水平合并单元格的方法。您必须预测具体返回的错误代码,然后做出相应的反应。您可以将其转换为 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
推荐阅读
- django - Django Formset `extra` field value take huge time to load the page
- python - Scrapy Python can‘t extract links with more stable xpath
- java - 我的短信备份应用程序无法在后台运行?
- next.js - 谷歌提供商的下一个身份验证登录在表单中不起作用
- python - 检测熊猫数据框中的特定字符
- kubernetes - 连接拒绝尝试使用主机名将来自 FluentBit 的 TCP“转发”到 Kubernetes 中的 FluentD 实例
- typescript - UsePipes 用于 NestJs 中的服务功能
- json - Postgresql JsonPath:如何识别数组?
- python - 将 UI 转换为 Python 文件没有显示任何内容
- r - `caret` 包重采样输出中不同模型的准确率完全相同