Я загрузил поток памяти с документом Word, и я хочу иметь возможность изменять определенный текст в потоке памяти и сохранять его обратно в документ Word, например, функции поиска и замены. Пожалуйста, кто-нибудь может мне помочь с этим, так как я не хочу использовать библиотеки Word Interop. У меня уже есть код для загрузки и сохранения документа, см. Ниже. Проблема заключается в том, что если я преобразую строку памяти в строку и использую метод замены строки, когда я сохраняю строку, все форматирование в документе 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();
}
Я скопировал код из примера кода в Интернете. Вот почему использовался поток памяти, так как я понятия не имел, как это сделать. Моя проблема в том, что компания, в которой я работаю, не хочет использовать слово interop, поскольку иногда они обнаруживают, что слово может иногда отображать всплывающие диалоговые окна, которые препятствуют выполнению закодированной функциональности. Вот почему я хочу посмотреть на способы достижения функциональности слияния почты, но программным способом. Я сделал нечто очень похожее на то, что хочу сделать здесь много лет назад, но в Delphi нет C #, и я обычно терял код. Так что если кто-то может пролить свет на это, я был бы признателен.