使用FastReport打印C# Winform程序报表
程序员文章站
2022-03-15 23:22:11
...
- 需要引入以下dll
- 2.打印按钮代码
private void ButtonClickPrint()
{
if (dgv.Rows.Count == 0)
{
MessageBox.Show("无数据!", "提示", MessageBoxButtons.OK, MessageBoxIcon.Error);
return;
}
dgv.EndEdit();
DataTable dt = new DataTable("XBCRecord");
dt.Columns.Add("车间");
dt.Columns.Add("物料种类");
dt.Columns.Add("料号");
dt.Columns.Add("型号");
dt.Columns.Add("来料不良", typeof(decimal));
dt.Columns.Add("废品", typeof(decimal));
dt.Columns.Add("B品", typeof(decimal));
DataRow row;
for (int i = 0; i < dgv.Rows.Count; i++)
{
row = dt.NewRow();
row["车间"] = dgv.Rows[i].Cells["车间"].Value.ToString();
row["物料种类"] = dgv.Rows[i].Cells["物料种类"].Value.ToString();
row["料号"] = dgv.Rows[i].Cells["料号"].Value.ToString();
row["型号"] = dgv.Rows[i].Cells["型号"].Value.ToString();
row["来料不良"] = dgv.Rows[i].Cells["来料不良"].Value == System.DBNull.Value ? 0 : Convert.ToDecimal(dgv.Rows[i].Cells["来料不良"].Value.ToString());
row["废品"] = dgv.Rows[i].Cells["废品"].Value == System.DBNull.Value ? 0 : Convert.ToDecimal(dgv.Rows[i].Cells["废品"].Value.ToString());
row["B品"] = dgv.Rows[i].Cells["B品"].Value == System.DBNull.Value ? 0 : Convert.ToDecimal(dgv.Rows[i].Cells["B品"].Value.ToString());
dt.Rows.Add(row);
}
dt.TableName = "XBCRecord";
//dtCJ.TableName = "XBCRecord";
//DataTable dtXBCRecord = new DataTable();
//dtXBCRecord = dtCJ.Copy();
//dtXBCRecord.TableName = "XBCRecord";
//// 如果没有选择任何数据,不做任何处理,直接返回
//if (dtXBCRecord.Rows.Count <= 0)
// return;
// 加载报表
using (FastReport.Report report = new FastReport.Report())
{
report.Load(ReportFileName);
// 设置数据源
DataSet dataSet = new DataSet();
dataSet.Tables.Add(dt);
report.RegisterData(dataSet);
// 给报表中的参数设置值
report.SetParameterValue("StartTime", dateTimePicker1.Value.ToString("yyyy/MM/dd HH:mm:ss"));
report.SetParameterValue("EndTime", dateTimePicker2.Value.ToString("yyyy/MM/dd HH:mm:ss"));
report.SetParameterValue("PrintTime", DateTime.Now.ToString("yyyy/MM/dd HH:mm:ss"));
report.SetParameterValue("sum", sum);
//report.SetParameterValue("Use", tscmbUse.Text);
report.Show();
}
}
- 3.设计模板代码
private void toolStripButtonDesign_Click(object sender, EventArgs e)
{
if (dgv.Rows.Count == 0)
{
MessageBox.Show("无数据!", "提示", MessageBoxButtons.OK, MessageBoxIcon.Error);
return;
}
DataTable dt = new DataTable("XBCRecord");
dt = dtCJ.Copy();
dt.TableName = "XBCRecord";
DataSet dataSet = new DataSet();
dataSet.Tables.Add(dt);
FastReportHelper.CreateReport(ReportFileName, dataSet);
}
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
namespace WBClient
{
class FastReportHelper
{
/// <summary>
/// 设计报表,根据传入的报表文件打开设计界面,当报表文件不存在时,新建
/// </summary>
/// <param name="reportFilename">报表文件名</param>
/// <param name="dataSet">用于设计时使用的数据源</param>
public static void CreateReport(string reportFilename, System.Data.DataSet dataSet)
{
using (FastReport.Report report = new FastReport.Report())
{
if (!System.IO.File.Exists(reportFilename))
{
report.FileName = reportFilename;
}
else
{
report.Load(reportFilename);
}
report.RegisterData(dataSet);
report.Design(); // 打开设计界面
}
}
}
}
以下是做好的模板:
推荐阅读
-
C#中使用IrisSkin2.dll美化WinForm程序界面的方法
-
使用C# Winform应用程序获取网页源文件的解决方法
-
C#中使用IrisSkin2.dll美化WinForm程序界面的方法
-
使用C# Winform应用程序获取网页源文件的解决方法
-
C#在Winform开发中使用Grid++报表
-
使用FastReport报表工具生成标签打印文档
-
Winform中使用FastReport实现自定义PDF打印预览
-
c# winform打印excel(使用NPOI+Spire.xls+PrintDocument直接打印excel)
-
如何使用FastReport.Net在SAP NetWeaver中生成报表-第2部分:输出信息(打印文档)
-
基于C#的WinForm打印程序附带源代码