0
オープンファイルのコンテキストで、次のようなコード作業を行う必要があります。このコードは、現在開いている文書をデータベースに書き込むために、Excelアドインで実行する必要があります。 3行目のSystem.IO.File.ReadAllBytes()は、ドキュメントが現在使用中であることを示すエラーが発生します。開いているドキュメントで動作する同等のメソッドはありますか?そうでない場合、解決策は何ですか?「System.IO.File.ReadAllBytes()」などの方法を使用して、開いているファイルをデータベースにコピーするにはどうすればよいですか?
Foo.DataClasses1DataContext db = new Foo.DataClasses1DataContext();
string ThisDocument = Globals.ThisAddIn.Application.ActiveWorkbook.FullName;
byte[] inputBuffer = System.IO.File.ReadAllBytes(ThisDocument);
Foo.RFP_Document rfpDocument = new Foo.RFP_Document();
rfpDocument.DocumentName = "Some Name";
rfpDocument.DocumentFile = new System.Data.Linq.Binary(inputBuffer);
db.RFP_Documents.InsertOnSubmit(rfpDocument);
db.SubmitChanges();
ここにVBに関連する同様の質問へのリンクがあります。 How do I copy an open file in VB6?
私は一般的に、データベースにファイル全体を保存することは避けます。特にファイルが大きい場合は避けてください。なぜファイルを特定のフォルダにファイルとして保存してから、そのファイルパスに(データベースから)ポイントしますか? –
私は一般的にそうしています。しかし、この場合、私はファイルが常に小さくなることを知っています。そして、私は各文書の内容を検索可能にしたい。 – hughesdan
私はまだ1メガバイトが大きすぎると主張します。 Afterallは、UTF8エンコーディングで約1.000.000文字(バイト)です。なぜファイルそのものを検索してみませんか? –