У меня есть существующая библиотека, которую я могу использовать, чтобы получить файл docx и вернуть его. Программное обеспечение. Net Ядро размещено в Linux Docker контейнере.
Хотя его область действия очень ограничена, и мне нужно выполнить некоторые действия, которые он не может выполнить. Поскольку они просты, я подумал, что буду использовать Open XML, и для доказательства своей концепции все, что мне нужно сделать, это прочитать docx как поток памяти, заменить некоторый текст, превратить его в поток памяти и вернуть его.
Однако возвращаемый документ не читается. Я закомментировал замену текста ниже, чтобы устранить это, и если я закомментирую вызов метода ниже, тогда docx можно будет прочитать, поэтому я уверен, что проблема в этом методе.
Предположительно я я делаю что-то здесь в корне неправильно, но после нескольких часов гуглил и играл с кодом, я не уверен, как это исправить; Есть идеи, что я не прав?
Спасибо за помощь
private MemoryStream SearchAndReplace(MemoryStream mem)
{
mem.Position = 0;
using (WordprocessingDocument wordDoc = WordprocessingDocument.Open(mem, true))
{
string docText = null;
StreamReader sr = new StreamReader(wordDoc.MainDocumentPart.GetStream());
docText = sr.ReadToEnd();
//Regex regexText = new Regex("Hello world!");
//docText = regexText.Replace(docText, "Hi Everyone!");
MemoryStream newMem = new MemoryStream();
newMem.Position = 0;
StreamWriter sw = new StreamWriter(newMem);
sw.Write(docText);
return newMem;
}
}