2

データベースにある特定のフィールドのプレースホルダーを含むWord文書をユーザーがアップロードできるようにする必要があるという要件があります。これが彼らのテンプレートになります。たとえば、プレースホルダーの前に@@などを付けることができます。例えば

Dear @@Title @@Lastname

次に、レコードを取得して、Word文書へのエクスポートを押すことができます。これにより、テンプレートを選択できるようになります。テンプレートを選択して、[続行]をクリックできます。@@Title次に、テンプレートを取得し、選択したレコードのデータベースのタイトルフィールドに置き換えます。どこから始めればよいのか、これを行うためにどのコンポーネントが必要なのかわかりません。

私の最初の調査から、Office 2007の新しいオープンXML標準でこれを行うことができるようです。したがって、テンプレートを読み込んで、すべての内容をdbテーブルのどこかに保存する必要があります。次に、使用者がエクスポートしたい場合は、コンテンツを再度取得してから、@@プレースホルダーを検索して置換し、適切にリンクします。次に、ドキュメントを出力ストリームに再度保存すると、ブラウザに保存ダイアログが表示されます。

ASP.Net MVCを使用していて、ホストされた環境にいます。また、ユーザーがテンプレートをアップロードするときに、新しいビュータイプを動的に作成し、新しいビューを動的に作成することも考えていました。ただし、このアプローチが機能するかどうかはわかりません。

これは良いアプローチですか?どのツールを見る必要がありますか?他に何か提案はありますか?

4

2 に答える 2

3

これは、Word文書にデータを挿入してユーザーに返すために採用したアプローチに似ています。.docxファイル(抽出が簡単なzipファイル)を開いてドキュメントを抽出し(document.xmlという単語フォルダー内)、置換を行ってから、ドキュメントを.docxファイルに戻し、ユーザーに返しました。 。

私たちが遭遇した問題は、単語が奇妙な場所に挿入されたタグ、特にスペル/文法エラーなどでした。そのため、検索/置換を行うときは注意する必要がありました。

ドキュメントを簡単に更新できるように、ドキュメントのフィールドをデータベースに保存しないことにしました。

.docxファイルを開くためにdotnetzipコンポーネントを使用しました

また、ダウンロード数を節約するために、複数のドキュメントを1つの大きなドキュメントに結合することも行いました。私が覚えているなら、このマージを行うためにopenxmlツールキットを使用しました。このウェブサイトには、役立つかもしれない他の情報もたくさんあります。

于 2010-07-05T18:18:06.123 に答える
1

「Razor」という名前の新しいビューエンジンコードがMicrosoftからまもなくリリースされることについては、ScottGuthriesのブログ投稿をご覧ください。コメントには、ASP.NETMVCビューで話しているようなメールマージシナリオで使用できるという話があります。

于 2010-07-05T18:25:42.800 に答える