欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

使用FastReport打印C# Winform程序报表

程序员文章站 2022-03-15 23:22:11
...
  1. 需要引入以下dll

使用FastReport打印C# Winform程序报表

  • 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();    // 打开设计界面
            }
        }
    }
}

使用FastReport打印C# Winform程序报表

 

以下是做好的模板:

使用FastReport打印C# Winform程序报表

相关标签: C#