9

Microsoft.Office.Interop.Word.DocumentC#を使用してディスクに保存せずに、バイト配列からオブジェクトを作成するにはどうすればよいですか?

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;      
}
4

1 に答える 1

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);

これがあなたが探している答えではないことは知っていますが、このような場合(本当にやりたいことを行うにはかなりの時間とそわそわが必要です)、開発時間が実行時間を上回るかどうかを検討する価値があるかもしれませんパフォーマンス。

それでも意図した方法で解決する方法を検討したい場合は、このスレッドの回答をお勧めします。

于 2012-11-05T07:53:21.493 に答える