我需要在C#中使用Open XML从Word文档中找到要替换的确切单词。目的是用某些特殊字符替换用户的个人详细信息,以使读者看不到它。
例如,用户具有以其表格提及的地址,该地址存储在数据库中,并且他还上传了一个Word文档,该Word文档还包含与他的地址匹配的以下字符串类型。我的目的是将地址与###匹配
签名,以便其他用户看不到该地址。例如
"422, Plot no. 1000/A, The Moon Residency II, Shree Nagrik Co. Op. Society, Sardarnagar, Ahmedabad.
寻找一个机会,使我成为一个能影响大众并且太有效的个性。在组织上,我将努力在一个单一的工作
无需进行任何专业转换的地方,并且愿意在需要不断发展且需要合并可变域的环境中工作
和。”
我想用“#”符号代替“ Co”,“ Op”。我的输出是这样的:
"422, Plot no. 1000/A, The Moon Residency II, Shree Nagrik #. #. Society, Sardarnagar, Ahmedabad.
寻找一个机会,使我成为一个能影响大众并且太有效的个性。在组织上,我将努力在一个单一的工作
无需进行任何专业转换的地方,并且愿意在需要不断发展且需要合并可变域的环境中工作
和。”
现在我有几个问题1.我如何搜索整个单词,现在我的代码将机会单词替换为## portunity,因为该单词具有Op。与Constant相同,将其替换为## nstant。如果整个单词匹配,我需要替换。
目前,我的代码可以将单词替换为word文件。
MemoryStream m = new System.IO.MemoryStream();
//strResumeName contain my word file url
m = objBlob.GetResumeFile(strResumeName);
using (WordprocessingDocument wordDoc = WordprocessingDocument.Open(m, true))
{
body = wordDoc.MainDocumentPart.Document.Body;
colT = body.Descendants<DocumentFormat.OpenXml.Wordprocessing.Text>();
foreach (DocumentFormat.OpenXml.Wordprocessing.Text c in colT)
{
if (c.InnerText.Trim() != String.Empty)
{
sb.Append(c.InnerText.Trim() + " ");
}
}
string[] strParts = sb.ToString().Split(' ');
HyperLinkList = HyperLinksList(wordDoc);
redactionTags = GetReductionstrings(strParts);
}
using (Novacode.DocX document = Novacode.DocX.Load(m))
{
//objCandidateLogin.Address contain my address
if (!String.IsNullOrEmpty(objCandidateLogin.Address))
{
string[] strParts = objCandidateLogin.Address.Replace(",", " ").Split(' ');
for (int I = 0; I <= strParts.Length - 1; I++)
{
if (strParts[I].Trim().Length > 1)
{
document.ReplaceText(strParts[I].Trim(), "#############", false, RegexOptions.IgnoreCase);
}
}
}
}
您将OpenXML与Novacode一起使用时,应该考虑仅使用OpenXML。
关于用“#”替换文本。您将必须遍历word文档中的所有段落,并检查其中的Text元素,以查看要查找的文本是否存在,如果存在,则可以替换该文本。
没有别的了。希望这可以帮助。
IEnumerable<Paragraph> paragraphs = document.Body.Descendants<Paragraph>();
foreach(Paragraph para in paragraphs)
{
String text = para.Descendents<Text>().FirstOrDefault();
//Code to replace text with "#"
}
我已经将此代码写出内存了,但是如果继续执行这些行,则将找到解决方案。
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句