我想在不打开的情况下阅读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();
}
答案 0 :(得分:1)
我认为这应该有所帮助。它解释了如何将编辑内容放回集合中。 https://www.codeproject.com/Articles/87616/List-T-ForEach-or-Foreach-It-Doesn-t-Matter-Or-Doe
答案 1 :(得分:1)
因此,如果您的单词模板在每次基本上都是相同的
您要在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,但您可以选择任何您喜欢的格式。