如何通过DocumentFormat.OpenXml word文档获取更新的字节数组?

问题描述 投票:0回答:0

我正在尝试获取一个 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();
            }
        }
c# .net openxml openxml-sdk
© www.soinside.com 2019 - 2024. All rights reserved.