gpt4 book ai didi

c# - 在 MVC 上使用基于 Microsoft 站点的 WordprocessingDocument 后收到消息 "MEMORY STREAM IS NOT EXPANDABLE"

转载 作者:行者123 更新时间:2023-12-05 08:23:03 33 4
gpt4 key购买 nike

目前,我基于 Microsoft 站点上的“在文档部分 (Open XML SDK) 中搜索和替换文本”。我意识到在文件下载到我的驱动器后代码出现了问题。

所以我打开那个文件并收到一条消息

MEMORY STREAM IS NOT EXPANDABLE at 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;
}

最佳答案

您应该使用 capacity = 0 创建 MemoryStream,这意味着它可以调整大小,然后添加您从文件中读取的字节。

var allBytes = File.ReadAllBytes(path);

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

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

检查这个answer

关于c# - 在 MVC 上使用基于 Microsoft 站点的 WordprocessingDocument 后收到消息 "MEMORY STREAM IS NOT EXPANDABLE",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52018950/

33 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com