2010-12-06 21 views
6

私はC#でアプリケーションを作成しましたが、図のようにコンテンツを請求書の形式で印刷したいのですが、一度しか印刷しませんでしたが、データグリッドビューでは、請求書の最後に労働者と総労働者のリスト形式で存在する必要があります。 一部の人々は私がどのように我々は、フォームから必要な値alt text請求書を印刷するC#Winforms

+0

Crystal Reportsのようなものがおそらく最も良い賭けです。他にもレポートツールがあります。 Telerikにはいくつかのものがあります(ただし高価です)。 – ChrisF

+0

しかしvs 2010にはCrystalレポートがありません。このソフトウェアをvs 2010のないクライアントマシンに公開するには、Crystalレポートをインストールする必要があるかもしれませんのでご安心ください。 –

+1

http://を使用していますしかし、$ 150 –

答えて

6

Visual Basic PowerPackのPrintFormコントロール(C#プロジェクトでも使用できます)を使用するのが最も簡単で簡単な方法です。

http://msdn.microsoft.com/en-us/vbasic/bb735936.aspx

ただ、そのコードを呼び出すので、ちょうどフォームにごレポートを設計し、

printForm1.Print(); 

これは、フォーム上にあるものは何でも印刷されるコードの呼び出しからフォームに上のコントロールをドラッグしますあなたは終わった。

+0

私のアプリケーションの再配布はどうですか?インストールする必要があります。 –

+0

アプリケーションでdllを展開するか、含まれているブートストラップパッケージを使用して、clickonceまたはセットアッププロジェクトで簡単に再配布できます。それは非常に小さくてシンプルです、詳細は私の答えのリンクを見てください。 – theChrisKent

3

私はC#のフォームからいくつかのフィールドを印刷するために必要な最後の時間を印刷することができ、短いそれを切る簡単なソリューション を探して、それらを使用したことがないクリスタルレポートを使用することを示唆しました「ビットマップ」と「グラフィックス」オブジェクトを使用してビットマップイメージを作成し、それを印刷するために「PrintDocument」を使用しました。

印刷されるレポートのレイアウトは、印刷される要素の座標を指定することによってコード内で行われます。それは安く汚いですが、働きます。

3

ローカルSSRSレポート(拡張子.rdlc)を使用できます。レポートを作成するには、「レポート作成」の下に新しいアイテムテンプレートが必要です。レポートは、レポートビューアコントロールを使用してWinFormsに表示されます(このコントロールは、WindowsFormsHostを使用してWPFアプリケーションでも使用できます)。唯一の欠点は、アプリケーションにインストールする必要のある依存関係です。 Here is the redistributable package for the 2010 report viewer.

レポートは、ブラウザから表示する必要がある場合に、SSRSインスタンスで簡単にホストすることができます。また、SSRSインスタンスでホストされているレポートをローカルでレンダリングすることもできます。

レポートの作成に使用するデータソースに応じて、レポートビューアを使用するためのガイドがオンラインで豊富に用意されています。次の例では、汎用リストをデータソースとして使用しています。新しいReportDataSource行の "labels"は、レポート定義のDatasetの名前と同じでなければなりません。ジェネリックオブジェクトのプロパティは、データセットの列名と一致する必要があります。

public ReportViewer(IEnumerable<UnprocessedLabel> labels) 
    { 
     InitializeComponent(); 

     var reportViewer = new Microsoft.Reporting.WinForms.ReportViewer { ProcessingMode = ProcessingMode.Local }; 
     reportViewer.LocalReport.ReportPath = System.IO.Path.GetDirectoryName(Application.ResourceAssembly.Location) + "\\UnprocessedPalletLabel.rdlc"; 
     var ds = new ReportDataSource("labels", labels); 
     reportViewer.LocalReport.DataSources.Add(ds); 
     reportViewer.RefreshReport(); 
    } 
関連する問題