我是第一次使用 winform 应用程序,我有一个 gridview,其中包含用户购买的产品列表。
我有一个点击打印按钮,允许用户生成如下所示的收据:
所以在这里我很困惑我是否应该使用“winform default RDLC or 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 报表或 Crystal 报表)生成报表。 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
( image ) - 在第二列第一数据行中,右键单击并选择
UnitPrice
。 ( image ) - 单击
[UnitPrice]
,然后按Home 并键入UnitPrice:
( image ) - 对组中的下一行中的数量执行相同的操作。
- 如果您需要组中的另一行,请重复第 3 步。
您可以设置单元格的边框,方法是选择它们并分别为顶部、左侧、底部和右侧设置
BorderStyle
。
下载
您可以在此处使用表达式克隆或下载示例:
关于c# - 如何在winform应用程序中生成产品收据?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55454073/