我已经用 c# 编写了一个应用程序,现在我想以发票的形式打印它的内容,如图所示我只想打印一次客户数据,但他要求在 datagrid 视图中显示的汽车上执行的作业应该在发票末尾有人工和总人工的清单形式。有些人建议使用水晶报表,我从未使用过它们,所以寻找一个更简单的解决方案来缩短它我们如何从表单中打印所需的值
3 回答
最简单快捷的解决方案是使用 Visual Basic PowerPack 的 PrintForm 控件(您也可以在 C# 项目中使用它)。
http://msdn.microsoft.com/en-us/vbasic/bb735936.aspx
只需将控件拖到您的表单上,然后从代码调用中
printForm1.Print();
这将打印表单上的任何内容,因此只需在表单上设计您的报告,然后调用该代码,您就完成了。
上次我需要从 C# 表单打印几个字段时,我只是使用“Bitmap”和“Graphics”对象创建了一个位图图像,并使用“PrintDocument”来打印它。
打印报告的布局是通过指定要打印的元素的坐标在代码中完成的。它既便宜又脏,但是很管用。
您可以使用本地 SSRS 报告(.rdlc 扩展名)。在“报告”下应该有一个用于创建报告的新项目模板。报表使用报表查看器控件显示在 Winforms 中(该控件也可以在使用 WindowsFormsHost 的 WPF 应用程序中使用)。唯一的缺点是必须与您的应用程序一起安装的必需依赖项。 这是 2010 报表查看器的可再发行包。
一个优点是,如果/何时需要从浏览器查看报告,可以轻松地将报告托管在 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();
}