2010-12-06 101 views
6

我已經在c#中編寫了一個應用程序,現在我想以發票的形式打印其內容,如圖所示,我只想打印一次顧客數據,但他要求在他的汽車上執行的工作在datagrid視圖中應該以發票結束時的勞動和總勞動的清單形式存在。 有些人建議使用Crystal Reports我從來沒有使用過所以尋找一個簡單的解決方案 從形態切割其所短,我們怎樣可以打印需要的值alt text打印發票C#Winforms

+0

像Crystal Reports這樣的東西可能是你最好的選擇。那裏還有其他報告工具。 Telerik有一些(但它們很昂貴)。 – ChrisF 2010-12-06 20:49:50

+0

但vs 2010沒有水晶報告,當涉及到在沒有VS 2010的客戶端機器上發佈此軟件時,可能需要安裝水晶報告,以便有點...您知道 – 2010-12-06 20:53:46

回答

6

最簡單和最快捷的解決方案是使用Visual Basic PowerPack的PrintForm控件(也可以在C#項目中使用它)。

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

只需拖動控制上窗體,然後從代碼調用

printForm1.Print(); 

這將打印無論是形式,所以只設計一個表格報表然後調用代碼,你完成了。

3

上次我需要打印從C#形式的幾個字段,我只是使用「位圖」和「圖形」對象創建了一個位圖圖像,並使用「PrintDocument」來打印它。

打印報告的佈局是通過指定要打印的元素的座標在代碼中完成的。它便宜又髒,但工作。

3

您可以使用本地SSRS報告(.rdlc擴展名)。在「報告」下應該有一個新的項目模板來創建報告。該報告使用報告查看器控件顯示在Winforms中(該控件也可以在使用WindowsFormsHost的WPF應用程序中使用)。唯一的缺點是必須與您的應用程序一起安裝所需的依賴項。 Here is the redistributable package for the 2010 report viewer.

A plus是報告可以輕鬆託管在SSRS實例中,如果/需要時它將需要從瀏覽器中查看。查看器還可以在本地呈現SSRS實例中託管的報告。

有很多指南可以在線使用報表查看器,具體取決於數據源用於填充報表。以下示例使用通用列表作爲數據源。新報表數據源行中的「標籤」必須與報表定義中的數據集名稱相同。通用對象的屬性也必須與數據集的列名相匹配。

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(); 
    }