2010-12-14 14 views
1

単語文書をOracle 10gデータベースにBLOBオブジェクトとして格納します。私はこの単語の文書の内容(テキスト)を読んで、いくつかの変更を加え、そのテキストをC#コードの別のフィールドに書きたいと思います。C#を使用してOracle DBにBLOBオブジェクトとして格納されたWord文書を読み取る

C#2.0ではどうすればよいですか?

私はこれが思い付いた最も簡単なロジック -

  1. BLOBオブジェクトを読むストアそれFileSystemの
  2. 内のテキスト内容
  3. があなたの仕事
  4. を投稿しません抽出テキストを別のフィールドに挿入します。

私は私はあなたがすでに(Oracle.DataAccessSystem.IO名前空間を使用)ステップ1と2を行う方法を知っていることを前提とし、このようなAspose

+0

個人的に私はこれを打破するだろう。 1&2は3,4,5と大きくは無関係です。 –

+0

@Marc:Hmm。はい、それは最も賢明な選択肢になります。 BLOBオブジェクトからテキストを直接読み取ることができるかどうか疑問に思っていました。 – Magic

+0

Wordから使用できるようにするには、どこかに格納しておく必要があります。しかし、単にパスを使用してください。GetTempFileName'関数は一時ファイル名を取得して保存し、最後に削除します。 –

答えて

1

などの任意の商用ソリューションWord.dllを使用することはできませんが。

手順3と5では、Word Automationを使用します。このMSのサポート記事では、開始方法を説明しています。How to automate Microsoft Word to create a new document by using Visual C#

Wordのバージョンがわかれば、早期バインディングを使用することをお勧めします。詳細およびここでのサンプルコード:Using early binding and late binding in Automation

編集:あなたは、C#からBLOBを使用する方法がわからない場合は、こちらを見てみましょう:How to: Read and Write BLOB Data to a Database Table Through an Anonymous PL/SQL Block

+0

Word Automationを見て、その動作を見てみましょう。遅延バインディングと早期バインディングについては、リンクが機能しません。あなたは同じものを編集していただけますか?ありがとうございました。 – Magic

+0

@マジック:申し訳ありませんが、リンクが修正されました。 –

+0

Wordの自動化がおそらく最も簡単です。あなたが無人のサーバー型環境でこれを実行する必要がある場合は、落とし穴がたくさんあることに気をつけてください。 – DarinH

0

をこれは私の検索で来る続けるので、私は追加します将来の読者の利益のための答え。

Wordの自動化を避けることを強くお勧めします。それは辛いほど遅く、アップグレードの度にMicrosoftの開発者の気まぐれに晒されます。可能であれば、ファイルを手動で処理してください。 The files are nothing but zipped archives of XML files and resources(文書に埋め込まれた画像など)。

この場合、希望のライブラリを使用してdocxを解凍し、XMLを操作してから、結果を元に戻すだけです。

これはdocファイルではなくdocxファイルを使用する必要がありますが、上のリンクで説明しているように、これはOffice 2007以降のデフォルトのWord形式であり、ユーザーが過去に執着していない限り。

たとえば、2007年には、Wordの自動化を使用して45分かかったプロセスを1つに変換し、同じハードウェアで手動でファイルを15秒間処理しました。明らかに、私はMicrosoftにこれを非難しているわけではありません.Wordの自動化方法は、文書をどのように操作するのかわからないため、変更する可能性のあるすべてを予測して追跡する必要があります。一方、あなたはあなたが何をしたいのか正確に知っているので、あなたはレーザー焦点であなたの方法を書くことができます。

関連する問題