4

ユーザーが特定のドキュメントテンプレート(Wordなど)をアップロードし、その中に特定のIDを持つコントロール(ラベル、テキストボックス)を配置し、コントロールのIDに基づいて、テンプレートにデータを入力するアプリケーションを作成する必要があります。 SQLサーバーから、データで満たされたWord文書をダウンロードできるようにします。

とにかく、C#とAPS.NET、Javascript、Jqueryなどを使用して実行できますか?

どこから始めたらいいのかわからない。

前もって感謝します。

4

3 に答える 3

3

次のように、テンプレートからドキュメントを作成できます。

priavte void CreateWordDocument(string InputFileNamePath, string OutputFileNamePath)
    {

    Application app = new Microsoft.Office.Interop.Word.Application();   

    doc = app.Documents.Open(InputFileNamePath,ref missing, ref missing,ref Missing, ref Missing);
    // Activate document
    doc.Actiavte();
    //Find place holders in input template and replace them with database values

    this.FindAndReplace(app,"<Name>","John"); //take all values from database 
    this.FindAndReplace(app,"<Address>","Test address");
    this.FindAndReplace(app,"<City>","Test City");

    //Save file
    doc.SaveAs(ref OutputFileNamePath, ref missing, ref missing, ref missing, ref missing);

    doc.Close(ref missing,ref missing,ref missing,)
    }

詳細については、リンクにアクセスしてください:http ://www.techrepublic.com/blog/howdoi/how-do-i-modify-word-documents-using-c/190

于 2012-10-16T08:50:15.017 に答える
1

少し検索したところ、問題の解決策はMicrosoftOffice用のOpenXMLSDK2.0であることがわかりました。

私はそれを使用したことがなく、アプリケーションで使用できるようになるまで、多くの検索を行う必要があると思います。うまくいけば、それはうまくいくでしょう。

于 2012-10-16T08:49:29.790 に答える
0

C#で自分でコーディングする場合は、次の点にも注意してください。

  1. ドキュメントを直接操作する場合、ヘッダーとフッターは別々に処理する必要があります。繰り返し要素のページに同じ値が複数ある場合、参照がある場合は常に最初に定義された値をヘッダーに、最後に定義された値をフッターに配置する方が簡単であることがわかりました。
  2. XML表現を使用しないようにしてください。元のXMLを置き換える場合、ヘッダーとフッターをXMLドキュメントで処理するのは非常に困難です。
  3. テーブルは問題を引き起こす可能性があります。ドキュメントのテキスト表現を使用してコンテンツを解析する場合(繰り返し行を挿入する場合に必要)、テーブルはテキスト表示とドキュメント内のカーソル位置の間にオフセットを導入します。テーブル内に手動でアンカーを追加するか、XML表現を使用する必要があります。
  4. または、構造のようなテーブルが必要な場合は、ドキュメント内のテーブルの代わりにTAB-sを使用します。
  5. 写真やフレーム、またはその他のより高度な機能を繰り返す必要がある場合は、テーブルよりも簡単です。CxOの署名など​​、使用する画像のリストが限られている場合は、それらをすべてWord文書に入れて、まったく不要な画像や繰り返す必要のない画像を削除します。

アップロードする場合は、メタデータプロパティを設定することを忘れないでください(ドキュメント管理システムの作業が楽になります)。また、Webサービスなどを使用してバックエンドで処理することをお勧めします。

于 2013-10-24T11:40:31.797 に答える