繁体   English   中英

C#Word文档

[英]C# word document

我想阅读一个Word文档而不打开它。 然后替换其中的一些文本,然后使用C#将其另存为相同格式的其他名称。 但是文档不会随更改一起保存,而与原始文档的保存方式相同。 任何帮助将不胜感激。 提前致谢。

    string path = Server.MapPath("~/CustomerDocument/SampleNDA5.docx");
    WordprocessingDocument wordprocessingDocument = WordprocessingDocument.Open(path, false);
    {
        var body = wordprocessingDocument.MainDocumentPart.Document.Body;

        foreach (var text in body.Descendants<Text>())
        {
            if (text.Text.Contains("<var_Date>")) 
            {
                text.Text = text.Text.Replace("<var_Date>", DateTime.Now.ToString("MMM dd,yyyy"));
            }
        }
        wordprocessingDocument.SaveAs(Server.MapPath("~/CustomerDocument/SampleNDA10.docx"));
        wordprocessingDocument.Close();
    }

我认为这应该有所帮助。 它说明了如何将编辑放回集合中。 https://www.codeproject.com/Articles/87616/List-T-ForEach-or-Foreach-It-Doesn-t-Matter-Or-Doe

因此,如果您的单词模板每次都相同,

  • 复制模板
  • 在模板上工作
  • 以所需格式保存
  • 删除模板副本

在Word文档中要替换的每个部分,都必须为该位置插入一个书签(在区域中输入文本的最简单方法)。

我总是创建一个函数来完成此操作,最终我传递了路径-以及所有替换我在文档中的书签的文本。 函数调用有时会变长,但是对我有用。

Application app = new Application();
Document doc = app.Documents.Open("sDocumentCopyPath.docx");

if (doc.Bookmarks.Exists("bookmark_1"))
{
    object oBookMark = "bookmark_1";
    doc.Bookmarks.get_Item(ref oBookMark).Range.Text =
            "My Text To Replace bookmark_1";
}
if (doc.Bookmarks.Exists("bookmark_2"))
{
    object oBookMark = "bookmark_2";
    doc.Bookmarks.get_Item(ref oBookMark).Range.Text =
            "My Text To Replace bookmark_2";
}

doc.ExportAsFixedFormat("myNewPdf.pdf", WdExportFormat.wdExportFormatPDF);

((_Document)doc).Close();
((_Application)app).Quit();

除非您想将所有值都传递给函数,否则这段代码应该可以使您正常运行。

如果您需要更多说明,我也可以提供帮助:)我的示例将其另存为.pdf,但是您可以选择任何喜欢的格式。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM