我是第一次在winform应用程序上工作,我有一个gridview,其中包含用户购买的产品列表。
我点击了一个打印按钮,允许用户生成如下收据:
所以在这里我很困惑我是否应该使用“winform默认RDLC或Crystal Report”,或者我是否应该生成PDF然后将其打印为收据,但我不确定PDF是否是收据生成的好选择。
对于Crystal Report,我已经读过我需要安装它,客户端(谁将使用这个桌面应用程序)必须安装Crystal Report,并且还有一些涉及Crystal Report的许可,我不想要。
另外,如果我使用Crystal Report,那么我不确定是否可以生成完全高于收据(带表格格式)并且它是否复杂?
收据有点复杂,所以有更好的工具或方式,或者我应该如何生成上面图片中显示的收据?
更新:打印纸总尺寸为:7.50厘米,用户希望打印中心的所有内容。
Discount = FinalAmount - MRP;
客户名称,手机号码,账单号码,付款方式值由用户自己输入表格。
我有一个Excel文件,其中包含产品列表,每个产品我都有ProductId,ProductName,MRP等信息,如CGST,SGST等税务信息。
用于根据产品ID从excel文件填充gridview的代码:
using (OleDbConnection cnnxls = new OleDbConnection(strConn))
using (OleDbDataAdapter oda = new OleDbDataAdapter(query, cnnxls))
{
oda.Fill(dtProductList);
DataColumnCollection columns = dtProductList.Columns;
if (!columns.Contains("FinalAmount"))
{
dtProductList.Columns.Add(new DataColumn() { ColumnName = "FinalAmount", DataType = typeof(decimal) });
}
if (!columns.Contains("Quantity"))
{
dtProductList.Columns.Add(new DataColumn() { ColumnName = "Quantity", DataType = typeof(int) });
}
DataRow lastRow = dtProductList.Rows[dtProductList.Rows.Count - 1];
lastRow["FinalAmount"] = Convert.ToDecimal(lastRow["MRP"]);
lastRow["Quantity"] = 1;
}
生成并打印收据
您可以使用任何报表设计器工具(如RDLC Reports或Crystal Reports)生成报表。 RDLC报告已经足够好了。你可以print the RDLC report with or without showing the print dialog。你也可以轻松export the RDLC report manually or using the code。
如果由于任何原因您不想使用报告工具,作为另一种选择,您可以考虑使用generating HTML report easily using Run-time T4 templates。
使用RDLC报告,如何在单个单元格中显示多个字段
您可以轻松使用表达式在单个单元格中显示多个值。另外,作为另一个选项,您可以在单个行组中使用行,并在单个列中显示不同的字段。
示例1 - RDLC - 使用表达式在单个列中显示多个字段
以下步骤说明如何使用表达式在单个列中显示多个字段。我假设你已经设置了数据源,并有ProductName
,UnitPrice
和Quantity
字段。然后,按照下列步骤操作:
Table
。ProductName
(image)UnitPrice/Quantity
(image)Expression
。 (image)= "UnitPrice: " & Fields!UnitPrice.Value.ToString() & System.Environment.NewLine & "Quantitye: " & Fields!Quantity.Value.ToString()
示例2 - RDLC - 使用行组在单个列中显示多个字段
以下步骤说明如何在单个列中显示多个字段。我假设你已经设置了数据源,并有ProductName
,UnitPrice
和Quantity
字段。然后,按照下列步骤操作:
Table
。ProductName
(image)UnitPrice/Quantity
(image)Insert Row
。 (Inside Group - Below
)UnitPrice
(image)[UnitPrice]
来设置单元格的边框。下载
您可以在此处使用表达式克隆或下载示例:
UnitPrice:
我之前使用的一种快速简便的方法是生成一个html页面,然后使用html2pdf库将其转换为pdf文件。
您也可以考虑这种方法,因为RDLC报告/ Crystal报告对您的案例可能过度。
RDLC功能强大,而Crystal报表功能强大。您可以选择rdlc来消除许可成本。
使用RDLC
数据您需要将数据集BorderStyle
或数据源添加到报告中,您将操作该报告以满足所需的设计和数据。
设计在设计上,您可以根据自己的喜好拖放控件。有一个挑战,有时你在设计上看到的可能不是你在最终输出上看到的,所以你需要测试很多。
打印您可以使用rdlc进行打印预览或直接发送到pdf查看器。 repository就是一个例子。
结论我认为如果您在报告中生成的数据很好,那么使用rdlc和crystal报告时,设计和布局不会有太大问题。
更新根据提供的进一步信息,我试图做一些可能接近你想要实现的事情。我已经使用水晶报告以及数据库表来模拟因为时间。否则,使用rdlc可以实现相同的目的。
样本表我创建了zip file
以下是数据库的示例查询和结果。我已经制作了可以通过水晶报告来容纳的小组。您可以使用相同的计算文本值来区分Tax信息和Transaction Memo。 Here
这是调整设计后的最终目标。页面布局也可以根据您的口味进行调整。
更新。对于RDLC,我认为您需要为备忘录数据和税务信息添加数据集。如果它接近,请看下面。我没有预览有没有安装的组件。 Here