各位在winform中怎么实现报表的打印预览和打印功能??

Dominic 2002-12-12 09:11:50
有什么方法吗?我第一次做这个~~

我看过ms的例子,是打印文本文件的,难道要先生成文本文件,再打印?有没有办法直接把生成的数据输出到打印机?这种方法的预览功能怎么做??关键还有表格线啊,怎么表示?

我看过使用crystal report的一些文章,但我有个疑问,既然是第三方组件,有没有注册啊,过期的可能,别做给客户的报表,2个月后不能用了,岂不是很麻烦??

有没有其他免费的组件?c#又很容易调用的那种。现在要求有预览,分页和打印功能~~~

急!!!
...全文
297 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
Dominic 2002-12-12
  • 打赏
  • 举报
回复
laser0126(风铃草) ,谢谢你,有没有办法把公司的标志之类的图片插入?另外,这种方法不能实现预览功能,还要客户自己再处理一遍,你有没有做过直接输出到打印机的那种??

henryfan1(henry) ,使用crystal report,我没有用过,刚才我简单看了一下,好象和vf中自定义报表差不多,我听说这个组件要注册,我如果现在写好给客户,会不会出现过期之类的问题?你有没有具体应用的例子介绍介绍??
henryfan1 2002-12-12
  • 打赏
  • 举报
回复
我确定得crystal report会比EXECL好,使用起来都简单.
laser0126 2002-12-12
  • 打赏
  • 举报
回复
具体程序代码如下:
//连接数据库,准备循环取得每行记录的内容
string Strconnection;
SqlCommand mySqlcommand;
SqlConnection sqlconn;
SqlDataAdapter Dbread;

Dbread= new SqlDataAdapter();

Strconnection="data Source=localhost;initial catalog=Plan;persist security info=False;User id=sa;workstation id=localhost;packet size=4096";
sqlconn= new SqlConnection(Strconnection);

try
{
sqlconn.Open();

}
catch(Exception a)
{
MessageBox.Show(a.ToString());
}

mySqlcommand=new SqlCommand("select * from TJGL ",sqlconn);
DataSet DS=new DataSet();
Dbread.SelectCommand=mySqlcommand;
Dbread.SelectCommand.ExecuteNonQuery();
Dbread.Fill(DS,"TJGL");

//建立EXCEL对象,对EXCEL进行操作
Excel.Application oXL;
Excel._Workbook oWB;
Excel._Worksheet oSheet;
Excel.Range oRng;
try
{
//开始设置Excel对象
oXL= new Excel.ApplicationClass();
oXL.Visible=true;

//Get a new workbook
oWB= (Excel._Workbook)(oXL.Workbooks.Add(Missing.Value));
oSheet=(Excel._Worksheet)oWB.ActiveSheet;

//填写表头
oSheet.Cells[1,1]="工作项目";
oSheet.Cells[1,2]="技术要求";
oSheet.Cells[1,3]="时间";
oSheet.Cells[1,4]="劳动标准(天/人)";
oSheet.Cells[1,5]="次数";
oSheet.Cells[1,6]="金额(元/亩)";
oSheet.Cells[1,7]="其他";

//格式化表格内容
oSheet.get_Range("A1","G1").Font.Bold=true;
oSheet.get_Range("A1","G1").VerticalAlignment=Excel.XlVAlign.xlVAlignCenter;
oRng= oSheet.get_Range("A1","G1");
oRng.EntireColumn.AutoFit();

//填写数据库中的内容到相应的字段下


for( int i=2;i<DS.Tables["TJGL"].Rows.Count+1; i++)
{

string[,] saNames= new string[1,7];


oSheet.Cells[i,1]=DS.Tables["TJGL"].Rows[i].ItemArray[1].ToString();
oSheet.Cells[i,2]=DS.Tables["TJGL"].Rows[i].ItemArray[3].ToString();
oSheet.Cells[i,3]=DS.Tables["TJGL"].Rows[i].ItemArray[4].ToString();
oSheet.Cells[i,4]=DS.Tables["TJGL"].Rows[i].ItemArray[5].ToString();
oSheet.Cells[i,5]=DS.Tables["TJGL"].Rows[i].ItemArray[6].ToString();
oSheet.Cells[i,6]=DS.Tables["TJGL"].Rows[i].ItemArray[7].ToString();
oSheet.Cells[i,7]=DS.Tables["TJGL"].Rows[i].ItemArray[8].ToString();

//oRng= oSheet.get_Range("C2","C6"); 使用EXCEL里面得运算格式
//oRng.Formula="=A2&\"\"& B2";

oRng=oSheet.get_Range("F2","F"+DS.Tables["TJGL"].Rows.Count);
oRng.NumberFormat="¥0.00";
oXL.Visible=true;
oXL.UserControl=true;

}
}
catch (Exception theException)
{
String errorMessage;
errorMessage="Error:";
errorMessage=String.Concat(errorMessage,theException.Message);
errorMessage=String.Concat(errorMessage,"Line:");
errorMessage=String.Concat(errorMessage,theException.Source);

MessageBox.Show(errorMessage,"Error");
}
laser0126 2002-12-12
  • 打赏
  • 举报
回复
我是把数据导入到EXCEL文件中,用EXCEL打印的
VS .NET开发,用什么做报表? 可能的回答是Crystal Report,自.NET“紧密”集成Crystal Report后,这可能是开发人员比较单一的选择。但是,这种集成似乎并不非常紧密,网络上充斥着关于使用Crystal Report的抱怨,太复杂也许是其最为令人诟病的地方,自定义性比较差也不能为程序员们所容忍。(源码网整理:www.codepub.com) 当然,必须承认Crystal Report的功能还是非常强大的,被Business Object收购以后,商业职能的成分也在逐渐增加,也形成了一定规模的用户群。 Visual Studio .NET进入2005版本以后,Crystal Report与IDE的结合更“紧密”了,至少我们看不到那个讨厌的注册窗口了。但是,Microsoft似乎并不容忍在自己的超级工具竟然没有报表工具,于是Report Viewer Control出现了,我把它的报表称为RDLC报表。 在VS .NET 2005之前,SQL Server Reporting Services已经提供了一种被称为报表定义语言(Report Definition Language, RDL)的语言;在VS .NET 2005,Microsoft提供了针对这种报表的设计器,并提供了在WinForm和WebForm使用这种报表的能力。Microsoft将这种报表的后缀定为RDLC,RDL仍然是Report Definition Language的缩写,那么C代表什么呢?C代表Client-side processing,凸显了它的客户端处理能力。 这种报表的易用性和可定制性让我们完全有理由放弃Crystal Report,让我们来看看它的强大功能吧: 1、简单易用的控件,特别是Table控件,非常方便字段在报表上的排列; 2、灵活的可定制性,用XML来描述一个报表相关的一切,不用说了吧? 3、高度可编程性,在你的项目,甚至不需要有一个报表文件,通过代码就可以实现报表生成、预览打印等一系列操作; 4、支持DrillThrough数据钻取功能; 5、导出的Excel文件格式非常完美,任何其它报表在这方面都不能与之比拟,而且并不需要安装Excel; 需要说明的是,现在关于VS. NET 2005的Report Viewer Control的内容非常少,我只能按照自己的理解来说一些东西,这其肯定会有一些偏差,欢迎各位的批评指正。另外,我所涉及的内容都是关于LocalReport的,对于ServerReport没有进行研究。

110,571

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧