使用c#在特定位置的Word文档中写入文本

时间:2017-07-26 11:02:16

标签: c# visual-studio

我正在尝试修改word文档并在某些特定位置插入数据(我有一个模板文档,我必须准备好并填写所有空格)。我正在使用Microsoft.Office.Interop.Word库和到现在为止我只想弄清楚如何在文档的末尾插入文本,我也会写下代码,所以也许有人可以帮助我。谢谢!

     private void button1_Click(object sender, EventArgs e)

        string str = null;
        OpenFileDialog dia = new OpenFileDialog();
        if (dia.ShowDialog() == System.Windows.Forms.DialogResult.OK)
        {
            str = dia.FileName;
            Microsoft.Office.Interop.Word.Application app = new Microsoft.Office.Interop.Word.Application();
            Microsoft.Office.Interop.Word.Document doc1 = app.Documents.Open(str);

            object missing = System.Reflection.Missing.Value;
            doc1.Content.Text += "Merge?";
            app.Visible = true;
            doc1.Save();
            this.Close();

                }
            }

3 个答案:

答案 0 :(得分:1)

您可以使用Range对象在特定位置插入文本。 msdn

doc1.Range(0, 0).Text = "Hello World";

如果您有模板并且插入文本的位置始终位于同一位置,您还可以使用Bookmarkmsdn

<强> [更新]

以下是通过书签将文本添加到word文档的完整示例:

Application app = new Microsoft.Office.Interop.Word.Application();
Document doc = app.Documents.Open(@"your file");
string bookmark = "BookmarkName";

Bookmark bm = doc.Bookmarks[bookmark];
Range range = bm.Range;
range.Text = "Hello World";
doc.Bookmarks.Add(bookmark, range);

使用此解决方案,书签不会被删除,您可以使用相同的代码再次添加/修改它。

答案 1 :(得分:0)

您可以使用以下内容将字符串插入特定位置的另一个字符串。

doc1.Content.Text = doc1.Content.Text.Insert(10, "Merge?");

来源:https://msdn.microsoft.com/en-us/library/system.string.insert(v=vs.110).aspx

答案 2 :(得分:0)

为简单起见,首先在MS Word中添加书签,如下所示:

选择要添加文本的区域,然后转到“插入”>“在Word中添加书签”。

enter image description here

然后按如下所示为书签命名:

enter image description here

enter image description here

然后使用Ben的以下修改版本:

Microsoft.Office.Interop.Word.Application app = new Microsoft.Office.Interop.Word.Application();
Document doc = app.Documents.Open(Path.Combine(Environment.CurrentDirectory, "Report.doc"));

Dictionary<string, string> bookmarks = new Dictionary<string, string> { { "DateOfIssue", "23-06-2018"}, { "TotalNumOfPages", "20" } };

foreach (var bookmark in bookmarks)
{
    Bookmark bm = doc.Bookmarks[bookmark.Key];
    Range range = bm.Range;
    range.Text = bookmark.Value;
    doc.Bookmarks.Add(bookmark.Key, range);
}

最后输出如下:

enter image description here