2 c# search replace memorystream
我已经加载了一个带有word文档的内存流,我希望能够更改内存流中的特定文本并将其保存回word文档,如搜索和替换功能.请允许任何人帮助我,因为我不想使用Word Interop库.我已经有了加载和保存文档的代码,请参阅下文.问题是,如果我将memorystring转换为字符串并使用字符串替换方法,当我保存字符串时,word文档中的所有格式都将丢失,当我打开文档时,所有显示的都是整个地方的黑盒子.
private void ReplaceInFile(string filePath, string searchText, string replaceText)
{
byte[] inputFile = File.ReadAllBytes(filePath);
MemoryStream memory = new MemoryStream(inputFile);
byte[] data = memory.ToArray();
string pathStr = Request.PhysicalApplicationPath + "\\Docs\\OutputDocument.doc";
FileInfo wordFile = new FileInfo(pathStr);
FileStream fileStream = wordFile.Open(FileMode.Create, FileAccess.Write, FileShare.None);
fileStream.Write(data, 0, data.Length);
fileStream.Close();
memory.Close();
}
Run Code Online (Sandbox Code Playgroud)
我从互联网上的示例代码中复制了代码.所以这就是为什么使用memorystream,因为我不知道该怎么做.我的问题是我工作的公司不想使用单词interop,因为有时他们发现单词可以在occassion上显示弹出对话框,阻止编码功能执行.这就是为什么我想以一种程序化的方式来研究实现邮件合并功能的方法.很多年前,我确实做了类似于我想要做的事情,但是在Delphi而不是C#中,我通常会丢失代码.所以,如果有人能够对此有所了解,那么我将不胜感激.
您将不得不使用Word互操作库 - 或至少类似的东西.它不像Word文档只是纯文本文档 - 它们是二进制文件.将字节转换为字符串并以此方式替换将彻底破坏文档.
使用新的开放格式,您可以编写自己的代码来解析它们,但这比使用库要困难得多.