我正在尝试获取一个 C# 方法来更新
.docx
文件并返回更新文件的字节数组。我使用 DocumentFormat.OpenXml
进行 .docx
文件处理。原始(未更新).docx
文件的字节数组必须是该方法的输入参数。重要的是不要将文件或临时文件保存到驱动器。因此,我创建了以下方法,但正如我所看到的,我的方法返回原始字节数组,而不是更新后的字节数组。
public static byte[] SearchAndReplaceByteArray(byte[] docByteArray)
{
MemoryStream docStream = (MemoryStream)StreamHendler.ByteArrayToStream(docByteArray);
using (WordprocessingDocument wordDoc = WordprocessingDocument.Open(docStream, true))
{
string docText = null;
using (StreamReader sr = new StreamReader(wordDoc.MainDocumentPart.GetStream()))
{
docText = sr.ReadToEnd();
}
Regex regexText = new Regex("OriginalText");
docText = regexText.Replace(docText, "UpdatedText");
using (StreamWriter sw = new StreamWriter(wordDoc.MainDocumentPart.GetStream(FileMode.Create)))
{
sw.Write(docText);
}
docStream.Position = 0;
byte[] updatedDocByteArray = StreamHendler.StreamToByteArray(docStream);
return updatedDocByteArray;
}
}
请帮我解决任务。
这是我在上面介绍的方法中使用的两种方法:
public static Stream ByteArrayToStream(byte[] inputByteArray)
{
MemoryStream stream = new MemoryStream();
stream.Write(inputByteArray, 0, inputByteArray.Length);
return stream;
}
public static byte[] StreamToByteArray(Stream inputStream)
{
using (MemoryStream memStream = new MemoryStream())
{
inputStream.CopyTo(memStream);
return memStream.ToArray();
}
}