实例介绍
【实例简介】
c# fastreport printdiag 修改打印机设置,弹出打印机设置
【实例截图】
【核心代码】
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using FastReport;
using System.Data;
using System.Windows.Forms;
using System.IO;
namespace FastReportTestCode
{
public class FastReportHelper
{
public enum EnumFastPrintMode
{
/// <summary>
/// 直接打印
/// </summary>
Print = 1,
/// <summary>
/// PrintPreivew
/// </summary>
PrintPreivew = 2,
/// <summary>
/// 设计模式
/// </summary>
Design = 3,
}
public void Print(string printTemplateName, DataSet dataSet, string printerName,int flag,string path)
{
//Loving.Print.PrintHelper.PrintRdlc("", Environment.CurrentDirectory "\\Report/rep_RCKQD", true, dataSet);
//var str = "";
//var filePath = Environment.CurrentDirectory "\\Report\\" printTemplateName;//获取打印模板位置
var filePath = path "\\Report\\" printTemplateName;//获取打印模板位置
Report report = new Report();//创建FastReport实例
//report.Preview=
report.RegisterData(dataSet);//注册数据源
foreach (DataTable dataTable in dataSet.Tables)
{
report.GetDataSource(dataTable.TableName).Enabled = true;//设置手动为true,false时设计器中看不到数据对象
}
if (!System.IO.File.Exists(filePath))//检查模板是否存在
{
//MessageBox.Show("不存在当前打印模板:" printTemplateName Environment.NewLine "现在进入设计模式");
report.Design();//设计模式,可新建模板
return;
}
report.Load(filePath);//打开报表
if (!string.IsNullOrEmpty(printerName))
report.PrintSettings.Printer = printerName;//设置打印机名字
report.PrintSettings.ShowDialog = true;
var mode = (EnumFastPrintMode)flag;//打印模式, print:直接打印 PrintPreivew:预览 Design:设计模式
switch (mode)
{
case EnumFastPrintMode.Print:
report.Print();
break;
case EnumFastPrintMode.PrintPreivew:
report.RegisterData(dataSet, "NorthWind");
report.Show();
break;
case EnumFastPrintMode.Design:
report.Design();
break;
default:
report.Show();
break;
}
}
public void Print(string printTemplateName, DataSet dataSet, string printerName, int flag, string path, string strGys, string strShrq, string strFph, string strTzr, string strShr)
{
//Loving.Print.PrintHelper.PrintRdlc("", Environment.CurrentDirectory "\\Report/rep_RCKQD", true, dataSet);
//var str = "";
//var filePath = Environment.CurrentDirectory "\\Report\\" printTemplateName;//获取打印模板位置
var filePath = path "\\Report\\" printTemplateName;//获取打印模板位置
Report report = new Report();//创建FastReport实例
//report.Preview=
dataSet.Tables[0].TableName = "WGRK";
DataSet ds = new DataSet();
DataTable dt = new DataTable();
dt = dataSet.Tables[0].Clone();
foreach (DataColumn col in dt.Columns)
{
if (col.ColumnName == "数量")
{
//修改列类型
col.DataType = typeof(Int32);
}
if (col.ColumnName == "成本金额" || col.ColumnName == "售价金额")
{
//修改列类型
col.DataType = typeof(double);
}
}
foreach (DataRow dr in dataSet.Tables[0].Rows)
{
DataRow drnew = dt.NewRow();
drnew = dr;
dt.Rows.Add(drnew.ItemArray);
}
ds.Tables.Add(dt);
dataSet = ds;
DataTable dtTt = new DataTable();
dtTt.TableName = "ttxx";
dtTt.Columns.Add("gys");
dtTt.Columns.Add("shrq");
dtTt.Columns.Add("dh");
dtTt.Columns.Add("bgy");
dtTt.Columns.Add("fh");
DataRow drTt = dtTt.NewRow(); ;
drTt["gys"] = strGys;
drTt["shrq"] = Convert.ToDateTime(strShrq).ToString("yyyy-MM-dd");
drTt["dh"] = strFph;
drTt["bgy"] = strTzr;
drTt["fh"] = strShr;
dtTt.Rows.Add(drTt);
dataSet.Tables.Add(dtTt);
report.RegisterData(dataSet);//注册数据源
//foreach (DataTable dataTable in dataSet.Tables)
//{
// report.GetDataSource(dataTable.TableName).Enabled = true;//设置手动为true,false时设计器中看不到数据对象
//}
if (!System.IO.File.Exists(filePath))//检查模板是否存在
{
//MessageBox.Show("不存在当前打印模板:" printTemplateName Environment.NewLine "现在进入设计模式");
report.Design();//设计模式,可新建模板
return;
}
report.Load(filePath);//打开报表
if (!string.IsNullOrEmpty(printerName))
report.PrintSettings.Printer = printerName;//设置打印机名字
report.PrintSettings.ShowDialog = false;
var mode = (EnumFastPrintMode)flag;//打印模式, print:直接打印 PrintPreivew:预览 Design:设计模式
switch (mode)
{
case EnumFastPrintMode.Print:
report.Print();
break;
case EnumFastPrintMode.PrintPreivew:
report.RegisterData(dataSet);
report.Show();
break;
case EnumFastPrintMode.Design:
report.Design();
break;
default:
report.Show();
break;
}
}
//add by zengyan 20180807 新增修改表列的数据类型
public static DataTable UpdateColumnType(DataTable dataSource, Dictionary<string, Type> dic_ColType)
{
DataTable dt_Tmp = dataSource.Clone();
foreach (DataColumn col in dt_Tmp.Columns)
{
if (dic_ColType.ContainsKey(col.ColumnName))
{
//修改列类型
col.DataType = dic_ColType[col.ColumnName];
}
}
//foreach (DataRow dr_Tmp in dataSource.Rows)
//{
// decimal d = decimal.Round(decimal.Parse("0.55555"), 4);
// dt_Tmp.Rows.Add(dr_Tmp.ItemArray);
//}
for(int i=0;i<dataSource.Rows.Count;i )
{
//decimal da = decimal.Round(decimal.Parse(dataSource.Rows[i]["数量"].ToString()), 4);
dt_Tmp.Rows.Add(dataSource.Rows[i].ItemArray);
// dt_Tmp.Rows[i]["数量"] = da;
}
foreach (DataColumn col in dt_Tmp.Columns)
{
if (dic_ColType.ContainsKey(col.ColumnName))
{
//修改列类型
col.DataType = dic_ColType[col.ColumnName];
}
}
return dt_Tmp;
}
//add by zengyan 20180807 新增打印报表通用方法
public static void Print(string fileName, DataTable dataSource, string printerName, Dictionary<string, object> dic_Param, int printMode)
{
DataSet ds_DataSource = new DataSet();
ds_DataSource.Tables.Add(dataSource.Copy());
Print(fileName, ds_DataSource, printerName, dic_Param, printMode);
}
//add by zengyan 20180807 新增打印报表通用方法
public static void Print(string fileName, DataSet dataSource, string printerName, Dictionary<string, object> dic_Param, int printMode)
{
try
{
string strPath = Application.StartupPath.ToString();
var filePath = strPath "\\Report\\" fileName;
Report report = new Report();
report.Load(filePath);
for (int i_Index = 0; i_Index < dataSource.Tables.Count; i_Index )
{
if (string.IsNullOrEmpty(dataSource.Tables[i_Index].TableName))
{
dataSource.Tables[i_Index].TableName = "DataTable" i_Index.ToString();
}
}
report.RegisterData(dataSource);//注册数据源
foreach (DataTable dataTable in dataSource.Tables)
{
report.GetDataSource(dataTable.TableName).Enabled = true;//设置手动为true,false时设计器中看不到数据对象
}
foreach (KeyValuePair<string, object> param in dic_Param)
{
report.SetParameterValue(param.Key, param.Value);
}
if (!System.IO.File.Exists(filePath))//检查模板是否存在
{
report.Design();//设计模式,可新建模板
return;
}
if (!string.IsNullOrEmpty(printerName))
report.PrintSettings.Printer = printerName;//设置打印机名字
report.PrintSettings.ShowDialog = true;
var mode = (EnumFastPrintMode)printMode;
switch (mode)
{
case EnumFastPrintMode.Print:
report.Print();
break;
case EnumFastPrintMode.PrintPreivew:
report.RegisterData(dataSource);
report.Show();
break;
case EnumFastPrintMode.Design:
report.Design();
break;
default:
report.Show();
break;
}
}
catch (Exception exception)
{
MessageBox.Show("ex:" exception.ToString());
throw;
}
}
}
}
相关软件
小贴士
感谢您为本站写下的评论,您的评论对其它用户来说具有重要的参考价值,所以请认真填写。
- 类似“顶”、“沙发”之类没有营养的文字,对勤劳贡献的楼主来说是令人沮丧的反馈信息。
- 相信您也不想看到一排文字/表情墙,所以请不要反馈意义不大的重复字符,也请尽量不要纯表情的回复。
- 提问之前请再仔细看一遍楼主的说明,或许是您遗漏了。
- 请勿到处挖坑绊人、招贴广告。既占空间让人厌烦,又没人会搭理,于人于己都无利。
关于好例子网
本站旨在为广大IT学习爱好者提供一个非营利性互相学习交流分享平台。本站所有资源都可以被免费获取学习研究。本站资源来自网友分享,对搜索内容的合法性不具有预见性、识别性、控制性,仅供学习研究,请务必在下载后24小时内给予删除,不得用于其他任何用途,否则后果自负。基于互联网的特殊性,平台无法对用户传输的作品、信息、内容的权属或合法性、安全性、合规性、真实性、科学性、完整权、有效性等进行实质审查;无论平台是否已进行审查,用户均应自行承担因其传输的作品、信息、内容而可能或已经产生的侵权或权属纠纷等法律责任。本站所有资源不代表本站的观点或立场,基于网友分享,根据中国法律《信息网络传播权保护条例》第二十二与二十三条之规定,若资源存在侵权或相关问题请联系本站客服人员,点此联系我们。关于更多版权及免责申明参见 版权及免责申明
网友评论
我要评论