4

Word文書をデータベースに保存したいのですが、次のようにします:

  FileStream st = new FileStream(filePath, FileMode.Open);
  byte[] buffer = new byte[st.Length];
  st.Read(buffer, 0, (int)st.Length);
  st.Close();
  //save Buffer into DB
  //myentityobject.FileContent = buffer;
  //save it

しかし、それを読みたいとき、DBから取得したストリームから単語文書を作成する方法がわかりません。次のようなことを試しました:

 var doc = myentityobject.FileContent;
 MemoryStream stream = new MemoryStream(doc as byte[]);
 letterPatternDoc = new Document(stream);
 filePath = @"D:\LetterPatternDocument001.doc";
 object oMissing = System.Reflection.Missing.Value;
 currentApp = new wd.Application();
 currentApp.Visible = true;
 currentDoc = currentApp.Documents.Add(Type.Missing, Type.Missing);
 currentDoc = doc;
 currentDoc.SaveAs(ref path, oMissing, oMissing, oMissing, oMissing, oMissing, false
               , oMissing, oMissing, oMissing, oMissing, oMissing, oMissing, oMissing,      oMissing, oMissing);

しかし、それは機能しません。

編集:

私はコードを変更し、今は動作しています。ファイルストリームでファイルを保存してから、それを読みました.しかし、それが良い解決策であるかわかりませんか?

FileStream fileSream = new FileStream(filePath, FileMode.Create, FileAccess.ReadWrite);
        BinaryWriter bw = new BinaryWriter(fileSream);
        bw.Write(FileContent);//filecontent is a byte[]
        fileSream.Close();

       // WordDoc.OpenDocument(filePath);
4

4 に答える 4

0

ドキュメントオブジェクトをシリアル化して、ドキュメントの状態を保持し、dbに保存してみてください。デシリアライズを読んでいる間、ドキュメントオブジェクトは再び表示できるようになります。

于 2012-07-12T06:06:23.563 に答える
0

Word ではストリームを開くことはできませんが、ストリームを保存して変更し、データベースで更新した後、この「一時」ファイルを削除するだけです。

于 2012-07-12T09:08:28.703 に答える
0

この方法を試すことができますか: ファイルをどこかに保存し、データベースへのファイル パスを保存します。このファイルを読みたいときは、データベースからファイル パスを取得できます。

于 2012-07-12T05:29:21.183 に答える