自动创建段落(Word Interop)

时间:2013-10-24 10:50:56

标签: c# ms-word office-interop

我尝试将一些段落自动放入Word文档中,但它始终将其放在文档的末尾而不是书签。

public void createStepTable(Word.Document _myDoc, DataGridView dgv, Testcaselist _testcaselist)
    {
        int namecount = 1;
        object oMissing = System.Reflection.Missing.Value;

        Word.Bookmark myBookmark = _myDoc.Bookmarks.get_Item("TextMarkeEinzelheiten");
        MessageBox.Show(myBookmark.Start.ToString());
        Word.Range myRange = _myDoc.Range(myBookmark.Start,myBookmark.End);

        Word.Field myfield = _myDoc.Fields.Add(myRange);
        Word.Selection mySelection = myRange.Se




        foreach (Testchannellist testChannelListToFind in _testcaselist.Testchannellist)
        {

            Word.Paragraph pText = _myDoc.Paragraphs.Add(myRange);         
            pText.Format.SpaceAfter = 10f;
            pText.Range.Text = String.Format("This is headline #{0}",namecount);
            pText.Range.InsertParagraphAfter();

            int stepcount = 0;
            foreach (Teststeplist testStepListToFind in testChannelListToFind.Teststeplist)
            {
                var sText = _myDoc.Paragraphs.Add(myRange);  
                sText.Format.SpaceAfter = 10f;
                sText.Range.Text = String.Format("This is testfall #{0}", stepcount);
                sText.Range.InsertParagraphAfter();


                for (int i = 0; i < testStepListToFind.requirementlist.Count; i++)
                {
                    var rText = _myDoc.Paragraphs.Add(myRange);  
                    rText.Range.ListFormat.ApplyBulletDefault();
                    rText.Range.InsertBefore(testStepListToFind.requirementlist[i].ToString() );
                }

                dgv.DataSource = testStepListToFind.repTest;
                var tText = _myDoc.Paragraphs.Add(myRange);                    
                tText.Format.SpaceAfter = 10f;
                tText.Range.Text = String.Format("This is Tabelle #{0}", stepcount );
                tText.Range.InsertParagraphAfter();
                stepcount++;


            }


        }

    }

所有那些自动创建的Paragraph应该位于“TextMarkeEinzelheiten”书签,但每次尝试都会陷入混乱。

1 个答案:

答案 0 :(得分:1)

首先确保您正在使用的文档/模板中存在书签。

这是我用来插入表格的代码。 Pragraph应该是相同的

            Range range = null;
            object pageBookmark = "TextMarkeEinzelheiten";
            if (_myDoc.Bookmarks.Exists(pageBookmark.ToString()))
            {
                range = _myDoc.Bookmarks.get_Item(ref pageBookmark).Range;
                Bookmark bookmark = _myDoc.Bookmarks.get_Item(ref pageBookmark);
                bookmark.Select();
            }
            else
            {
                range = range ?? _myDoc.Range(0, 0);
            }
            Word.Paragraph pText = _myDoc.Paragraphs.Add(myRange);

首先尝试使用此代码而不使用for循环。一旦你得到一个段落正确调整代码,以便在循环中插入新段落时更新范围和选择。

祝你好运:)