我正在尝试从word文件中读取文本,然后替换其中的一些文本,然后在c#中以相同的格式将其保存为其他名称。但是,当我打开生成的文档时,它不是用ms字打开,而是用notepad ++打开它。我想要单词file.Whats代码中的问题? 提前致谢。
string path = Server.MapPath("~/CustomerDocument/SampleNDA4.docx");
TextExtractor extractor = new TextExtractor(path);
string text = extractor.ExtractText();
//System.IO.File.Create(path).Close();
text = text.Replace("<var_Date>", DateTime.Now.ToString("MMM dd,yyyy"));
//System.IO.File.Create(Server.MapPath("~/CustomerDocument/GeneratedNDA3.docx"));
System.IO.File.WriteAllText(Server.MapPath("~/CustomerDocument/GeneratedNDA3.docx"), text);
答案 0 :(得分:0)
您可以使用{{1}}库将文档另存为Word文件。请检查以下代码是否适合您:
{{1}}
注意:MS Word应安装在执行此代码的服务器上。
答案 1 :(得分:0)
根据您的要求考虑以下选项。所有选项都有一个nuget包安装在项目中。
使用OpenXML
<WebLayout>
使用Office Interop,但需要在服务器上安装MSOffice。
using (WordprocessingDocument myDocument = WordprocessingDocument.Open(@"C:\Git\source.docx", true))
{
foreach (Paragraph objParagraph in myDocument.MainDocumentPart.Document.Body.Elements<Paragraph>())
{
string innerText = objParagraph.InnerText;
string modifiedString = innerText.Replace("<var_Date>", DateTime.Now.ToString("MMM dd,yyyy"));
if (modifiedString != innerText)
{
Run newRun = new Run();
newRun.AppendChild(new Text(modifiedString));
objParagraph.RemoveAllChildren<Run>();
objParagraph.AppendChild(newRun);
}
}
}
Application app = new Application();
Document doc = app.Documents.Open(@"C:\Git\source.docx");
foreach (Paragraph objParagraph in doc.Paragraphs)
{
objParagraph.Range.Text = objParagraph.Range.Text.Trim().Replace("<var_Date>", DateTime.Now.ToString("MMM dd,yyyy")) + "\r\n";
}
doc.SaveAs2(@"C:\Git\finalFile.docx");
doc.Close();
app.Quit();