2015-12-03 113 views
2

我試圖設計一個表格,最後一個單元格中有3個附加表格。喜歡這個。 Nested table exampleC#中的嵌套表格

我已經設法將第一個嵌套表放入第4行,但我的第二個嵌套表進入第一個表的單元格(1,1)。

Incorrect nested table example

var wordApplication = new Word.Application(); 
wordApplication.Visible = true; 
var wordDocument = wordApplication.Documents.Add(); 
var docRange = wordDocument.Range(); 
docRange.Tables.Add(docRange, 4, 1); 
var mainTable = wordDocument.Tables[1]; 
mainTable.set_Style("Table Grid"); 
mainTable.Borders.Enable = 0; 
mainTable.PreferredWidthType = Word.WdPreferredWidthType.wdPreferredWidthPercent; 
mainTable.PreferredWidth = 100; 
docRange.Collapse(Word.WdCollapseDirection.wdCollapseStart); 

var phoneRange = mainTable.Cell(4, 1).Range; 
phoneRange.Collapse(Word.WdCollapseDirection.wdCollapseStart); 
phoneRange.Tables.Add(phoneRange, 3, 2); 

var phoneTable = mainTable.Cell(4, 1).Tables[1]; 
phoneTable.set_Style("Table Grid"); 
phoneTable.Borders.Enable = 0; 
phoneTable.AutoFitBehavior(Word.WdAutoFitBehavior.wdAutoFitContent); 
phoneTable.Rows.RelativeHorizontalPosition = Word.WdRelativeHorizontalPosition.wdRelativeHorizontalPositionMargin; 

phoneRange.Collapse(Word.WdCollapseDirection.wdCollapseEnd); 

我已經試過塌陷的範圍,增加段落然後再次塌陷的範圍內。沒有運氣。我發現這個post和許多類似的,但我必須失去一些東西。

謝謝你的時間。

+0

它通常有助於像這樣的情況在代碼中添加一行:phoneRange.Select();並以此代碼執行結束。看看範圍的實際位置。我的直覺是你肯定在正確的軌道上,但可能需要移動Range.End回到一個角色或類似的東西:phoneRange.MoveEnd(ref oWdUnitCharacter,ref oMinusOne); FWIW你的更大的問題可能會變得很好地在同一行中彼此相鄰的表格。 –

+0

確實,最大的問題是將嵌套表彼此對齊。你必須使用浮動表來實現('Table.Rows.WrapAroundText = true;') –

+0

@CindyMeister在'phoneRange.MoveEnd(Word.WdUnits.wdCharacter,-1)中添加; phoneRange.Tables.Add(phoneRange,3,1);'產生錯誤 _對象引用錶行的結尾,表中的行結果會進入上面的行。我嘗試了各種組合,但沒有更多。感謝您一直以來的幫助。 – Beresford

回答

1

它通常有助於像這樣的情況下添加一行代碼:phoneRange.Select();並以此代碼執行結束。看看範圍的實際位置。現在,您可以使用鍵盤測試範圍,以便成功插入下一個表格。

既然你說phoneRange選擇第三行之外,而不是使用phoneRange嘗試設置一個新的Range對象phoneTable.Range然後將其摺疊到它的終點。