[英]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.