1

我正在尝试生成一个表格并将其插入到 Word 文档中,如下所示:

object missing = System.Reflection.Missing.Value;
var paragraph = miDoc.Paragraphs.Add(ref missing);

Microsoft.Office.Interop.Word.Table tablaEvaluacion = 
Globals.ThisDocument.Tables.Add(paragraph.Range, lstContacto.Count + 1, lstEvaluacion.Count + 3, ref missing, ref missing);

但是当行数超过 63 时,这会导致异常:“ COMException was unhandled by user code. The number must be between 1 and 63.

4

1 回答 1

6

首先 -你 100% 确定你的意思是行吗?正如您在下面的回答中看到的那样,我在表中插入超过 63 行没有问题,但是插入超过 63 列会导致与您描述的相同的问题。

无论如何,我已经尝试对此进行调查 - 这是我发现的:

使用谷歌:

使用文档:

  • 文档在这里没有太大帮助,因为没有提到限制。

使用 dotPeek:

  • 我尝试反编译该Microsoft.Office.Interop.Word.Tables类型,希望找到描述限制的评论 - 但没有运气。该代码只是在 Word 中使用函数调用该函数,COM因此异常很可能从 Word 一路冒泡,通过互操作程序集进入您的代码。

使用我自己的示例实现:

documentA.Tables.Add(range, 01, 64); // COMException -> "The number must be between 1 and 63."
documentA.Tables.Add(range, 01, 63); // All good
documentA.Tables.Add(range, 64, 01); // All good

示例代码显示,当我尝试使用超过 63 列时,COMException会抛出您所指的。我正在运行带有 Interop API 版本 15 的 MS Office 2013。

使用微软 Word 2013:

  • 首先使用我的示例应用程序插入一个包含 63 列的表格,然后我打开文档并要求 Word 插入另一列 - 这给了我以下错误:

在此处输入图像描述

所以这归结为 63 列似乎是允许插入的最大列数。

希望这有助于解决问题;)

于 2012-12-17T17:05:38.873 回答