2017-11-29 10 views
0

に表を貼り付けます。

私は内部のテンプレートテーブルでWord文書を持っています。表には、ヘッダーと3列を含む2行があります。私はテンプレートテーブルのコピーを保持したい。それから私は元のテーブルにデータを埋めます。その後、改ページを挿入して新しいページを開き、テンプレートテーブルを新しいページに貼り付けます。

マイコード:C#の単語の自動化:コピーして、次のように私は問題を単純化した新しいページ

string filePath = Application.StartupPath + @"\docs\test.docx"; 
Word.Application wordApp = new Word.Application(); 
Word.Document wordDoc = wordApp.Documents.Open(filePath); 
object oMissing = System.Reflection.Missing.Value; 
wordApp.Visible = true; 

//copy and keep template table 
Word.Table templateTable = wordDoc.Tables[1]; 

//fill the table 
Word.Cell cell; 
cell = wordDoc.Tables[1].Cell(2, 1); 
cell.Range.Text = "First Column..."; 
cell = wordDoc.Tables[1].Cell(2, 2); 
cell.Range.Text = "Second Column..."; 
cell = wordDoc.Tables[1].Cell(2, 3); 
cell.Range.Text = "Third Column..."; 

//insert a page break 
wordDoc.Words.Last.InsertBreak(Word.WdBreakType.wdPageBreak); 

//paste the template table in new page 
Word.Range range = templateTable.Range; 
range.Copy(); 
range.SetRange(templateTable.Range.End + 1, templateTable.Range.End + 1); 
Word.Table tableCopy = wordDoc.Tables.Add(range, 1, 1, ref oMissing, ref oMissing); 
tableCopy.Range.Paste(); 

問題:

  1. 満たさテーブルが貼り付けられ、いないテンプレートテーブル
  2. テーブルは終わりではない、新しいページの最初の表の後に貼り付けられ
  3. 文書の

私はいくつかのことを試しましたが、問題の解決方法を理解できません。
ご協力いただきありがとうございます。

答えて

0

おかげFrancesco Baruchelli's postに、私は最終的に問題を解決することができます:

ソリューション:

string filePath = Application.StartupPath + @"\docs\test.docx"; 
Word.Application wordApp = new Word.Application(); 
Word.Document wordDoc = wordApp.Documents.Open(filePath); 
object oMissing = System.Reflection.Missing.Value; 
wordApp.Visible = true; 
Word.Selection selection = wordApp.Selection; 

//copy and keep template table 
var tableToUse = wordDoc.Tables[1]; 
//copy the empty table in the clipboard 
Word.Range range = tableToUse.Range; 
range.Copy(); 

//fill the original table 
Word.Cell cell; 
cell = wordDoc.Tables[1].Cell(2, 1); 
cell.Range.Text = "First Column..."; 
cell = wordDoc.Tables[1].Cell(2, 2); 
cell.Range.Text = "Second Column..."; 
cell = wordDoc.Tables[1].Cell(2, 3); 
cell.Range.Text = "Third Column..."; 

//inserting a page break: first go to end of document 
selection.EndKey(Word.WdUnits.wdStory, Word.WdMovementType.wdMove); 
//insert a page break 
object breakType = Word.WdBreakType.wdPageBreak; 
selection.InsertBreak(ref breakType); 

//paste the template table in new page 
//add a new table (initially with 1 row and one column) at the end of the document 
Word.Table tableCopy = wordDoc.Tables.Add(selection.Range, 1, 1, ref oMissing, ref oMissing); 
//paste the original template table over the new one 
tableCopy.Range.Paste(); 
関連する問題