首页 > 解决方案 > 使用 MemoryStream 在远程位置 c# 上写入 .docx 文件

问题描述

我正在从字符串生成 MemoryStream 并将其传递给另一个方法,该方法将以.docx文件的形式将该 Stream 保存在远程位置。

public static MemoryStream GenerateStreamFromString(string s)
{
    MemoryStream stream = new MemoryStream();
    StreamWriter writer = new StreamWriter(stream);
    writer.Write(s);
    writer.Flush();
    stream.Position = 0;
    return stream;
}

上面的代码用于将字符串转换为 MemoryStream。我传递给上述方法的字符串是我通过Globals.ThisAddIn.Application.ActiveDocument.WordOpenXML行获得的 XML。

文件成功上传到远程位置,但当我下载该文件时,MS Word 抛出错误File is corrupted. Either part of file is missing or invalid(如下图所示)

在此处输入图像描述

我无法知道我生成的流是否错误/损坏,或者我需要执行更多操作以使该.docx文件有效?

对不起这个问题,有很多这样的问题,但没有一个比这更有帮助。

标签: c#interopmemorystreamword-addins

解决方案


以这种方式传递的 XML 不是有效的 DOCX 文件。实际的 DOCX 格式使用带有文件夹的压缩内容。您需要将文件从您的插件保存到一个临时位置(最好使用GetTempPath,然后将文件从磁盘读取到您的内存流中,并将其上传到您需要的任何地方。


推荐阅读