我有创建Asp.net MVC项目。我需要上传.docx文件,并且必须用用户当前详细信息和一些动态值替换文本。我已经在Assembly DocumentFormat.OpenXml.dll的帮助下完成了这项任务。 问题是它正在替换一些文本,但有些不是。我的代码是这样的 -
if (document.DocumentName.Contains(".doc") || document.DocumentName.Contains(".docx"))
{
using (WordprocessingDocument wordDoc = WordprocessingDocument.Open(File, true))
{
using (StreamReader reader = new StreamReader(wordDoc.MainDocumentPart.GetStream()))
{
documentText = reader.ReadToEnd();
}
documentText = documentText.Replace("##Username##", user.Username);
documentText = documentText.Replace("##Email##", user.Email);
documentText = documentText.Replace("##TSF Number##", convert(NewAccount_210.TSFILE_NUMBER).ToString());//check
documentText = documentText.Replace("##A3PThirdPartyId##", convert(NewAccount_210.A3P_THIRD_PARTY_ID));
documentText = documentText.Replace("##Location Code##", convert(NewAccount_210.LOCATION_CODE));
documentText = documentText.Replace("##AccountNumber##", convert(NewAccount_210.ACCT_NUMBER));//check
documentText = documentText.Replace("##Transaction Number##", convert(NewAccount_210.TRANSACTION_NUMBER));
documentText = documentText.Replace("##Current Date##", convert(NewAccount_210.CURRENT_DATE).ToString());
documentText = documentText.Replace("##Customer Name##", convert(NewAccount_210.CUSTOMER_NAME));
documentText = documentText.Replace("##SocialSecuirityNumber##", convert(NewAccount_210.SOCIAL_SECURITY_NUM));//check
documentText = documentText.Replace("##A3PAmountPlaced##", (convert(NewAccount_210.A3P_AMT_PLACED)).ToString());
documentText = documentText.Replace("##Interest Rate##", (convert(NewAccount_210.INTEREST_RATE)).ToString());//check
using (StreamWriter writer = new StreamWriter(wordDoc.MainDocumentPart.GetStream(FileMode.Create)))
{
writer.Write(documentText);
}
}
}
在上面的文字中,某些值如## AccountNumber ##,## Current Date ##等不会被替换。任何帮助都会被感谢。
答案 0 :(得分:1)
您的问题可能不是套管问题。它似乎与那个问题相同:
Why Office OpenXML splits text between tags and how to prevent it?
实际上,docx中的文本可能会被拆分:
##Interest Rate##
- >分裂
<w:t>##Interest</w:t>
<w:t> Rate##</w:t>
替换将找不到该字符串(看一下链接)