Получил сообщение «ПАМЯТЬ ПАМЯТЬ НЕ РАСШИРЯЕТСЯ» после использования базы WordprocessingDocument на сайте Microsoft на MVC

В настоящее время я основывался на «Поиск и замена текста в части документа (Open XML SDK)» на сайте Microsoft. Я понял, что код получил проблему после загрузки файла на мой диск.

Поэтому я открыл этот файл и получил сообщение

ПАРОЛЬ ПАМЯТИ НЕ РАСШИРЯЕТСЯ в sw.Write (docText);

Как это исправить?

В классе GenerateDocxHelper:

 private readonly MemoryStream _mem;
 private Dictionary<string, string> _dicData;

 public GenerateDocxHelper(string path)
 {
     _mem = new MemoryStream(System.IO.File.ReadAllBytes(path));
     _dicData = new Dictionary<string, string>();
 }

 public MemoryStream ReplaceTextInWord()
 {
     using (WordprocessingDocument wordDoc = WordprocessingDocument.Open(_mem, true))
        {


            string docText = null;
            using (StreamReader sr = new StreamReader(wordDoc.MainDocumentPart.GetStream()))
            {
                docText = sr.ReadToEnd();
            }


            foreach (var data in _dicData)
            {
                docText = docText.Replace(data.Key, data.Value);
            }

            using (StreamWriter sw = new StreamWriter(wordDoc.MainDocumentPart.GetStream(FileMode.Create)))
            {
                sw.Write(docText);
            }
        }

        _mem.Seek(0, SeekOrigin.Begin);

        return _mem;
 }

c#,asp.net-mvc,asp.net-mvc-4,

0

Ответов: 1


1 принят

Вы должны создать его MemoryStreamс capacity = 0помощью которого он будет изменяться по размеру, а затем добавить байты, которые вы прочитали из файла.

var allBytes = File.ReadAllBytes(path);

//this makes _mem resizeable 
_mem = new MemoryStream(0);

_mem.Write(allBytes, 0, allBytes.Length);

Проверьте этот ответ

C #, asp.net-MVC, asp.net-MVC-4,
Похожие вопросы
Яндекс.Метрика