2

データベースデータといくつかのユーザー入力に基づいてレポートを生成する単純なアプリケーションを作成する必要があります。私はC/C ++の豊富な経験がありますが、このプロジェクトではC#を選択する必要がありました。

クライアントマシンへのインストールが必要になるサードパーティのコンポーネントの使用はできるだけ避けたいと思います。したがって、MS Officeが提供する機能も使用しないようにしたいと思います(前任者と同じようにXLSテンプレートを使用することもできましたが、それは道のりのようには見えません。とにかく、前任者のソースは長い間失われています、これはおそらく良いことです。なぜなら、それはおよそ10年前のVBの怪物であり、時々クラッシュするからです)。同じことがCrystalReportsなどにも当てはまります。

私の現在のアイデアは、HTMLテーブルをHtmlDocumentその場で作成し(を使用して)、ユーザーに提示し(を使用してWebBrowser)、印刷することです。それは正しい道ですか?より単純/より堅牢/より良いアプローチはありますか?考えられる落とし穴は何ですか?

4

3 に答える 3

2

その場でテーブルを構築することはうまくいくでしょう。私はそのテクニックを頻繁に使用しますが、それは私にはハックのようです。私が使用するのは、ビジネスニーズが「美しい」ではなく「十分に良い」ことと迅速なターンアラウンドを必要とすることが非常に多いためです。


私は自分自身がサードパーティのコンポーネントに対して強い偏見を持っていると言って、これから提案しようとしていることを優先します。

私はほとんどの場合、それらを使用することを拒否し、アップグレード/ライセンスに頻繁に悩まされてきたため、別の解決策を考え出すのに邪魔になります。

そうは言っても...

幸い、.NETでは、すべてのサードパーティコンポーネントをクライアントPCにインストールする必要はありません。XCOPYデプロイメントでは、多くの場合、ソリューションで.DLLまたはプロジェクトを参照し、[常にコピー]または[新しい場合はコピー]オプションを指定して、dll(またはクラスライブラリプロジェクトを参照している場合は結果のdll)を含めることができます。 )そして、.dllが実行可能ファイルと同じディレクトリに存在する限り、サードパーティコンポーネントは機能します。

これらすべてを念頭に置いて、CodeProjectでWindowsフォームからDataGridViewを印刷するために使用したプロジェクトがあります。これは、ソースを取得して参照し、クライアントに実際に何もインストールしなくても使用できるものです。私はそれを複数のアプリで使用しました、そしてそれは私のお気に入りのツールの1つです。

DataGridViewのみが印刷されますが、画面に表示されているとおりに正確に印刷されるため、それが必要な場合は、少なくともチェックアウトすることをお勧めします。


3番目のオプションとして、ASP.NETの使用を検討できます。HTMLを生成する場合は、WinFormsアプリよりもASP.NETを使用して生成するのが同じくらい簡単です(実際には簡単です)。ASP.NETを使用すると、リピーター、リストビューなどを取得できます。これらはすべて、レポートを簡単に作成できるようにします。

主にWinFormsアプリですが、関連するレポートサイトがある実際のアプリが複数あります。

たとえば、小売店で受け入れられているクーポンのスキャンに使用されるWinFormsアプリがあります。COMポートでスキャナーと直接対話する必要があるため、これはWINFormsアプリです。ただし、レポート部分については、ASP.NETWebサイトを設定しました。WinFormsアプリでは、レポートメニューオプションを作成してページをポイントするのは非常に簡単です。私たちのユーザーは一般的に、これが2つの異なるアプリケーションであるという事実についてさえ考えていません。彼らはそれを1つとして見ています-彼らのクーポンスキャンアプリ。

すべてのポイントは、通常、任意のツールで物事を行うことが可能であるということですが、その仕事のために意図されたツールを使用する方がはるかに簡単です。HTMLレポートを生成する場合、ASP.NETはレポートを手動で作成するよりも優れたツールであり、ほとんどのUIにWinFormsアプリが必要な場合でも、それを実行してWebサイトを使用できます。レポート-各タスクに最適なツールを使用します。

于 2012-07-04T14:15:17.307 に答える
0

RazorEngineをチェックして、HTMLテンプレートを作成したいと思うかもしれません。

于 2012-07-04T14:14:15.557 に答える
0

HTMLをレンダリングするにはRazorエンジンをお勧めします。これは、HtmlDocumentオブジェクトを操作するよりも柔軟性があります。

レポートテンプレートを使用してファイルを作成し、それを解析して、レポート行オブジェクトのコレクションを送信できます。

于 2012-07-04T14:14:24.403 に答える