如何从字节数组创建Microsoft.Office.Interop.Word.Document对象,而不将其保存到磁盘?

时间:2012-11-05 07:34:51

标签: c# ms-word office-interop

如何从字节数组创建Microsoft.Office.Interop.Word.Document对象,而不使用C#将其保存到磁盘?

public static int GetCounterOfCharacter(byte[] wordContent)
{
   Application objWord = new Application();
   Microsoft.Office.Interop.Word.Document objDoc = new Document();
   //objDoc = objWord.Documents.Open(("D:/Test.docx"); i want to create document from byte array "wordContent"
   return  objDoc.Characters.Count;      
}

1 个答案:

答案 0 :(得分:14)

据我所知,没有直截了当的方法。 Word互操作库不能从字节流中读取。除非您正在处理大量(或大量)文件,否则我建议您只使用tmp文件:

Application app = new Application();

byte[] wordContent = GetBytesInSomeWay();

var tmpFile = Path.GetTempFileName();
var tmpFileStream = File.OpenWrite(tmpFile);
tmpFileStream.Write(wordContent, 0, wordContent.Length);
tmpFileStream.Close();

app.Documents.Open(tmpFile);

我知道这不是你正在寻找的答案,但在这样的情况下(做你真正想做的事需要相当多的时间和烦躁不安)可能值得考虑是否开发时间超过运行时性能。

如果您仍想按照预期的方式寻找解决方法,我会在this主题中推荐答案。