我已经在c#中编写了一个应用程序,现在我想以发票的形式打印其内容,如图所示我想只打印一次客户数据,但他要求在他的汽车上执行的工作在datagrid视图中显示应该在发票结尾处以劳动和总劳动的清单形式存在。 有些人建议使用水晶报告,我从未使用它们,所以寻找一个更简单的解决方案 简而言之我们如何从
形式打印所需的值答案 0 :(得分:6)
最简单,最快捷的解决方案是使用Visual Basic PowerPack的PrintForm控件(您也可以在C#项目中使用它)。
http://msdn.microsoft.com/en-us/vbasic/bb735936.aspx
只需将控件拖到您的表单然后从代码调用
printForm1.Print();
这将打印表单上的任何内容,因此只需在表单上设计报表然后调用该代码,即可完成。
答案 1 :(得分:3)
上次我需要从C#表单打印几个字段时,我只是使用“Bitmap”和“Graphics”对象创建了一个Bitmap图像,并使用“PrintDocument”来打印它。
通过指定要打印的元素的坐标,可以在代码中完成打印报告的布局。它便宜又脏,但很有效。
答案 2 :(得分:3)
您可以使用本地SSRS报告(.rdlc扩展名)。 “报告”下应该有一个新项目模板用于创建报告。报告使用报告查看器控件显示在Winforms中(该控件也可以在使用WindowsFormsHost的WPF应用程序中使用)。唯一的缺点是必须与您的应用程序一起安装的必需依赖项。 Here is the redistributable package for the 2010 report viewer.
如果需要从浏览器查看报告,则可以轻松地在SSRS实例中托管报告。查看器还可以在SSRS实例中托管本地报告。
根据用于填充报告的数据源,有大量在线使用报告查看器的指南。以下示例使用通用列表作为数据源。新ReportDataSource行中的“标签”必须与报表定义中的数据集名称相同。通用对象的属性还必须与数据集的列名匹配。
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();
}