2012-12-12 58 views
1

我想產生一個表,並將其插入到Word文檔,內容如下:最大行數Microsoft.Office.Interop.Word.Table

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.

+0

請顯示代碼 –

回答

6

首先 - 你100%確定你的意思是行嗎?正如你可以在下面的答案中看到的那樣,在表中插入63行以上的內容沒有問題,但插入63列以上的內容會導致與你描述的相同的問題。

反正,我已經試過調查這 - 這裏是我發現:

使用谷歌:

使用文檔:

  • 如沒有提到限制的documentation沒有多大幫助這裏。

使用dotPeek:

  • 我試圖反編譯的Microsoft.Office.Interop.Word.Tables類型,找到描述限制註釋的希望 - 但沒有運氣。該代碼僅使用COM來調用Word中的函數,因此Exception很可能從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中插入另一列 - 這給了我下面的錯誤:

enter image description here

那麼將此歸結爲是63列似乎是你被允許插入列的最大數量。

希望這有助於解決問題;)