我在想要用作模板的项目文件夹之一中保留了一个 word 文档 (.docx)。
此模板包含用户的自定义页眉和页脚行。我想方便用户以word格式下载自己的数据。为此,我想编写一个函数,该函数将接受用户数据并引用模板,它将创建一个新的 word 文件替换模板中的占位符,然后返回新文件以供下载(不将其保存到服务器)。这意味着模板需要作为模板完整无缺。
以下是我正在尝试的。我能够替换占位符。但是,我不知道如何将创建的内容作为可下载文件提供给用户。我不想在服务器中再次将新内容另存为另一个 word 文件。
public void GenerateWord(string userData)
{
string templateDoc = HttpContext.Current.Server.MapPath("~/App_Data/Template.docx");
// Open the new Package
Package pkg = Package.Open(templateDoc, FileMode.Open, FileAccess.ReadWrite);
// Specify the URI of the part to be read
Uri uri = new Uri("/word/document.xml", UriKind.Relative);
PackagePart part = pkg.GetPart(uri);
XmlDocument xmlMainXMLDoc = new XmlDocument();
xmlMainXMLDoc.Load(part.GetStream(FileMode.Open, FileAccess.Read));
xmlMainXMLDoc.InnerXml = ReplacePlaceHoldersInTemplate(userData, xmlMainXMLDoc.InnerXml);
// Open the stream to write document
StreamWriter partWrt = new StreamWriter(part.GetStream(FileMode.Open, FileAccess.Write));
xmlMainXMLDoc.Save(partWrt);
partWrt.Flush();
partWrt.Close();
pkg.Close();
}
private string ReplacePlaceHoldersInTemplate(string toReplace, string templateBody)
{
templateBody = templateBody.Replace("#myPlaceHolder#", toReplace);
return templateBody;
}
我相信下面的行将内容保存在模板文件本身中,这是我不想要的。
xmlMainXMLDoc.Save(partWrt);
我应该如何修改这个可以将新内容作为可下载的word文件返回给用户的代码?