通用水晶报表模板创建实例
EXCEL报表水晶报表SQLServer报表制作实例PPT课件

学生成绩
举例
A0101 SQL Server C 2.5 SQL Server
举例
2000070470 A0101 80.5
第24页/共75页
数据表间关系图
第25页/共75页
一个空白的Crystal Report实例
• 打开Visual 2005 • 新建Windows应用程序项目 • 添加Crystal Report报表(使用空白) • 建立报表数据源连接 • 插入报表显示字段 • 设置报表显示格式 • 在Windows Form中使用CrystalReportViewer显示报表
第5页/共75页
水晶报表(Crystal Report)概述
• Crystal Reports是一种报表工具包 • 创建灵活、特性丰富的报表 • 提供可视化的、所见即所得的报表设计界面 • 可以方便地访问不同的数据源 • 可设计灵活的、内容丰富的、高度格式化的、互动式以及具有专业质感
的报表 • 可将报表导出为熟悉的文件格式 • 可以将报表整合到 Web及桌面应用程序当中
第28页/共75页
输入SQL Server连接信息
第29页/共75页
添加报表输入表
第30页/共75页
Crystal Report字段管理器
第31页/共75页
字段和文本对象
• 插入和移动字段
• 调整字段大小
水晶报表环境搭建.pptx

4、查詢出edu_student_info表中全部數據,返回List
public class StudentInfoDaoImpl implements StudentInfoDao { @Override //查詢全部 public ArrayList<EduStudentInfo> queryEduAll() throws Exception { // TODO Auto-generated method stub List<EduStudentInfo> all=new ArrayList<EduStudentInfo>(); String sql="select * from edu_student_info"; PreparedStatement pstmt=null; DataBaseConnection dbc=null; //下面是針對數據庫的具體操作 try{ //鏈接數據庫 dbc=new DataBaseConnection(); pstmt=dbc.getConnection().prepareStatement(sql); ResultSet rs=pstmt.executeQuery(); SimpleDateFormat sdf=new SimpleDateFormat("yyyyMMdd"); while(rs.next()){ EduStudentInfo s =new EduStudentInfo(); s.setStudent_name(rs.getString("student_name")); s.setEntry_date(sdf.format(rs.getDate("entry_Date"))); System.out.println(s.getStudent_name()+s.getEntry_date()); all.add(s); } //進行數據庫更新操作 rs.close(); pstmt.close(); }catch(Exception e){ System.out.println(e); }finally{ //關閉數據庫 dbc.close(); } System.out.println(all.size()+"&&&&&&&&&&&&&&"); return (ArrayList)all; } }
水晶报表实验

四、 • 过使用连接共享以及限制记录集合的大小,可以使 实验作业 用
• 报表性能最大化。
5
三、实验内容及步骤
一、 实验目的
•
3.2 Pull模式的使用
• 首先创建rpt文件,并使用水晶报表设 二、 计接口设置一些必须的数据连接。
实验环境
• 拖放一个CrystalReportViewer控件至 三、 aspx 页面,设置它的属性指定我们上 实验步骤 一步创建的.rpt文件。
实验目的
•
新建Windows项目
二、 • 添加CrystalReportViewer 控件
• 实验环境 添加“选择报表”按钮
• 添加按钮响应事件
三、
实验步骤
四、 实验作业
3
三、实验内容及步骤
一、 • 实验目的 •
• • 二、 实验环境 • •
三、 • 实验步骤
•
• 四、 • 实验作业
2Web窗体中水晶报表的使用 结构 – 客户端: 客户端仅需要一个可以访问嵌入aspx页面报表的游览器就可以了
10
三、实验内容及步骤
一、 实验目的
•
3.3 使用Push模式
• 设计一个DataSet
二、 • 创建一个.rpt文件同时将其指定给上一步建 实验环境 立的DataSet。
• 在aspx页面中拖放一个CrystalReportViewer
三、 实验步骤
控件同时将其与前面的rpt文件建立联系。
• 在代码中访问数据库并把数据存入DataSet
四、 • 调用DataBind方法。
实验作业
11
三、实验内容及步骤
EXCEL报表,水晶报表,SQLServer2005报表制作实例-PPT精品文档

•
Excel报表制作
– 功能强大,操作简单 – 适合大多数初级用户制作简单办公报表 – 报表共享性差、安全性差
– 不能动态查询、显示报表内容
西南林业大学计算机与信息科学系——鲁 宁 7 Copyright © SWFC-CISD, 2010. All rights reserved.
LECTURE
水晶报表(Crystal Report)概述
西南林业大学计算机与信息科学系——鲁 宁 13 Copyright © SWFC-CISD, 2010. All rights reserved.
LECTURE
第一个向导报表实例
• •
打开Visual 2019
• 新建Windows应用程序项目
添加Crystal Report报表(使用向导) 建立报表数据源连接 设置报表显示字段和样式 在Windows Form中使用CrystalReportViewer显示报表
西南林业大学计算机与信息科学系——鲁 宁 10 Copyright © SWFC-CISD, 2010. All rights reserved.
LECTURE
Crystal Reports 结构
西南林业大学计算机与信息科学系——鲁 宁 11 Copyright © SWFC-CISD, 2010. All rights reserved.
利用Excel高级功能进行报表制作
– 数据透视表 – 使用公式、函数
•
使用Word邮件合并功能输出家长通知书
– Word+Excel
西南林业大学计算机与信息科学系——鲁 宁 3 Copyright © SWFC-CISD, 2010. All rights reserved.
WinForm中使用CrystalReport水晶报表——基础,分组统计,自定义数据源

WinForm中使⽤CrystalReport⽔晶报表——基础,分组统计,⾃定义数据源开篇本篇⽂章主要是帮助刚开始接触CrystalReport报表的新⼿提供⼀个循序渐进的教程。
该教程主要分为三个部分1)CrystalReport的基本使⽤⽅法;2)使⽤CrystalReport对数据进⾏分组求和;3)CrystalReport如何使⽤⾃定义的数据源(如内存中的DataTable表)三个⽅⾯来写。
相信看懂了这个教程之后,对于⾃⼰项⽬中的实现报表这⼀功能,应该就能轻松的应对了。
⼀ CrystalReport模板的制作及显⽰A模板的制作1、右键【项⽬属性】添加⼀个⽔晶报表(在vs中需要安装CrystalReport模块,不同vs版本下载不同的CrystalReport版本:CrystalReport下载链接:)2、添加报表的设计界⾯如下:⼀个报表包括(报表头,页眉,详细资料,报表尾,页眉)5个基本部分。
3、现在我们需要给新建的报表添加⼀个数据源,右键左边的【数据库字段】选择相应的数据源,进⾏绑定。
我这⾥选择的是sqlserver数据库。
4、输⼊数据库的登录信息,然后选择需要绑定的数据库表,除了绑定数据表之外,还可以绑定sql语句查询的结果,以及存储过程和视图,下⾯给出绑定数据库表格,和绑定sql查询。
1)绑定数据库表格2)点击连接下⾯的【添加命令】绑定sql语句。
5、绑定数据库之后在报表左侧的【字段管理器】中就会出现该表以及sql查询结果的的相应表头字段。
6、把相应的字段在报表视图中进⾏布局。
到此⽔晶报表的模板已经做好了。
注意:页眉中的userName,courseName,score是可以更改。
B模板的显⽰1、⾸先在窗体上拖⼀个CrystalReportView控件作为显⽰报表模板。
2、在form_load事件⾥⾯写如下代码:CrystalReport1 cr = new CrystalReport1();//实例化⼀个报表模板this.crystalReportViewer1.ReportSource = cr;//为报表显⽰控件设置数据源3、运⾏报表设计点丑,但是你可以根基⾃⼰的风格进⾏排版设计,如字体,⼤⼩,颜⾊等啦。
EXCEL报表,水晶报表,SQL Server 2005报表制作实例

• ReportDocument,范围更广泛的对象模型。
可通过升级获得的对象模型:
•
•
ReportClientDocument,范围最广泛的对象模型。 InfoObject 是一个功能强大的对象模型,用于在 Crystal Reports Server 或BusinessObjects Enterprise 框架内计划和配置报表。
和未绑定字段。
西南林业大学计算机与信息科学系——鲁 宁 24 Copyright © SWFC-CISD, 2010. All rights reserved.
LECTURE
SQL Server示例数据库表结构
班级信息表(ClassInfo)
字段名称 数据 类型 ClassID ClassName ClassDesc Varchar Varchar Varchar 字段 长度 10 50 100 Y 是否 为空 Y 班级编号 班级名称 班级描述 20000704 计算机2000 计算机怎样 PK 字段描述 举例
详细资料
• • •
放在“详细资料”部分中的对象随每条新记录输出
显示。
“详细资料”部分包含报表正文数据。批量报表数 据通常出现在这一节中。 当报表运行时,“详细资料”部分随每条记录重复 输出显示。
• 图表或交叉表不能放置在该节中。
•
19
放在该节中的公式对每条记录进行一次求值。
LECTURE
西南林业大学计算机与信息科学系——鲁 宁 Copyright © SWFC-CISD, 2010. All rights reserved.
报表页脚
• • • •
放在“报表页脚”节中的对象只在报表的结束位置
输出显示一次。
一、经典水晶报表设计三则之分栏

一、经典水晶报表设计三则之“分栏”借助"多列格式化"功能实现。
1. 启用"多列格式化"功能。
(1) 进入“节专家”对话框,并在“节”当选择“详细资料”。
(2) 在"公用"选项卡选中“多列格式化”,现在会出现“布局”选项卡。
2. 调整布局,实现分栏效果。
要想分两栏,调整“详细资料大小”的宽度,确保宽度的两倍小于去除页边距后的页面宽度,才能一行显示两行记录。
要想分三栏,调整“详细资料大小”的宽度,确保宽度的三倍小于去除页边距后的页面宽度,才能一行显示三行记录。
依次类推,实现其它栏数的分栏。
参考:“布局”选项卡(节专家)介绍当选定详细信息部分且选中“公用”选项卡上的“多列格式化”框后,出现“布局”选项卡。
使用“布局”选项卡以多列格式设置报表。
即,不是一直沿着页面向下打印数据,而是能够设置多列以使数据在列之间流动。
还能够在页面上按先行后列的方式打印数据,即先打印每列中的第一个记录,然后打印每列中的第二个记录,然后打印第三个记录,依此类推。
该对话框分为四个更小的框。
详细资料大小该框使您能够指定一个详细资料的尺寸(高度和宽度)。
肯定所希望的每一个详细资料的宽度(基于字符数、字体大小,等等)并在“宽度”编辑框中输入该值。
确定所希望的每个详细资料的高度(基于详细资料内的行数、字体大小等)并在“高度”编辑框中输入该值。
一、载入报表时报错千辛万苦,总算作完了程序,报表在开发机械上测试一切正常,做安装项目,生成后兴冲冲的拿到客户机上去实验,晕,载入报表时却报错(如图1),怎么会???仔细检查了程序代码,实在没有任何错误,看来问题出在报表发布上了。
图1通过一番苦苦寻觅,总算找到了问题所在。
原来环境下发布项目时水晶报表需要包括以下三种组件:报表(*.rpt)模块(*.msm)运行库(*.msm)这些模块文件是在C:\Program Files\Common Files\Merge Modules\ 目录里面,别急,让我慢慢跟您说。
水晶报表

一.建立普通报表1、从工具箱托CrystalReportViewer1控件到页面如:web.aspx页面2、单击菜单栏网站—添加新项---crystal报表----- CrystalReport1.rpt3、建立数据模板(“数据集Dataset1”)用来向报表中拖入字段1. 在项目中新建一个架构文件:a. 在处理方案资源管理器中,右击项目名,指向“增加”,然后单击“增加新项”。
b. 在“增加新项”对话框的“类别”区域,展开文件夹,然后选择“数据集”。
c. 在“模板”区域选择“数据集”。
d. 默许文件名:Dataset1.xsd。
E.在dataset1.Xsd页签单击鼠标右键----添加-----datatable------弹出表名为“DataTable1”的数据表窗体(即假数据表),在该窗体单击鼠标右键------添加-------列便在该表中产生了一个字段,点击该字段,在右侧属性列表框中可以编辑该字段如字段名称、类型。
依次添加字段(注意:该表中添加的字段数目、字段名称和类型一定要和cs文件中所要打印的“真数据集(即用SQL语句查询的数据)”的字段数目、字段名称和类型相吻合)。
这就创立了一个新的架构文件(Dataset1.xsd)。
4、在CrystalReport1.rpt页签内左侧----用鼠标右键----单击数据库字段-----数据库专家-------项目数据 数据集---------- Dataset1(即建立的假数据集)--------单击“》”按钮--------确定按钮。
此时“数据库字段”节点下就产生了子节点即datatable1表(即新建立的假数据表)---其中的字段便可以拖到报表中使用了。
二、建立单元格合并报表1右键单击“组名字段”节点------组专家-----单击需要合并的字段-----单击“>”按钮----加入后点击确定按钮2、右键单击报表中的“GroupHeaderSection1”------节专家-------勾选“延伸到后续节”点击确定按钮即可。
水晶报表官方实例大全

⽔晶报表官⽅实例⼤全在本⽂档中,你将获得由技术⽀持创建的⽰例报表列表。
这些⽰例报表⽰范了各种各样的报表创建技巧。
⽬的是⽰范概念。
这些⽰例报表被完全⽤⽂献证明,并且不被技术⽀持所⽀援。
⽂档包含了每种应⽤的描述,及其下载链接。
⽬录⽰范报表设计的⽰例报表 数组⽰例 营业⽇和⼩时⽰例 交叉表⽰例 ⽇期和时间⽰例 格式化和⽂本⽰例 公式⽰例 图表⽰例 组和深化⽰例 标签⽰例 参数⽰例 ⼦报表⽰例 表链接⽰例联系 CRYSTAL DECISIONS 以获得技术⽀持________________________________________________________________⽰范报表设计的⽰例报表数组⽰例⽂件名:cr_arrays_samples.zip该⽂件包含了多种⽰例报表,⽰范了如何在⽔晶报表 8.x 中建⽴及使⽤数组。
·BubbleSort.rpt该报表展⽰如何创建公式来排序数组中的元素。
⽤户应该熟悉数组和⾼级公式。
·CR_Dynamic_Array_Builder_Crystal_Syntax.rpt该报表⽰范如何随着报表进程,⼀步步的建⽴数组。
·CR_Index_not_store_and_fetch.rpt该报表⽰范如何为报表建⽴指针,使⽤动态数组创建和⼦报表。
⽤户应该熟悉数组和⼦报表。
·CR_Looping_Through_Multiple_Value_Paremeter.rpt该报表⽰范如何使⽤数组检查⽤于数据输⼊的多值参数。
⽤户应该熟悉数组和复杂公式。
·CR_Manual_Running_Array.rpt该报表展⽰使⽤数组求和的多种⽅式。
⽤户应该熟悉数组。
vCR_Pass_Values_From_Main_Report.rpt该报表⽰范如何将数组从主报表传递到⼦报表。
⽤户应该熟悉数组和⼦报表。
·Manual Top N.rpt该报表将展⽰如何使⽤数组改变“前 N 个”报表,来根据不同的字段排序。
水晶报表简单制作步骤

为什么水晶报表那么麻烦,每做一张报表都要选表,画线画格子,有没有一种方法可以一劳永逸?做一个模板,然后用不同的表都能用?还有就是能不能动态选择列,而且选择列后能报表能自动适用这个变化?甚至有些人也因为放弃了水晶报表,实际上这些都是水晶报表可以做到的。
在这里,我来讲解一下原理和实现。
希望该文章,能基本上解决这个问题。
当然,这个也不是万能的,也有其适用环境。
本文开发环境:VS2005 / CR XI R2 for .Net第一步:新建一个C#的水晶报表的WinForm空白项目。
在弹出报表数据源选择框的时候,不要选择任何任何数据源,直接点确定,创建一个空白报表。
第二步:项目中添加一个Dataset1.xsd,手工建立一个DataTable,命名为B igTable。
建立6个字段,全部为String型。
为什么用6个呢?这个数字6的确立,是根据你的实际需要,这个表的列的数目,需要大于等于你所需要操作的事实表的最大列数。
用为什么用String型呢?我们知道基本上所有的基础数据类型都可以转换为String,这样我们的这个表基本上可以容纳所有的数据类型。
好了,在报表中添加这个B igtable.将6个字段拖到详细资料节。
对齐。
()注意!不要使用框和线来画格子,这里用的是字段边框,初次操作可以暂时不用,我后面会专门讲一下这个格线的处理。
好了,这样我们的万能模板就做成了。
很简单,是吗?呵呵。
第三步:在w inform上拖上一个combox,一个button,用默认名称接口。
combox1用来选表的名称。
这样界面也完成了。
第四步:实现原理上面的几步下来,有经验的朋友基本上看出来我们是要用PUSH模式来实现了。
既然我们已经在报表里用到了BigTable,那么我们要传递给报表的数据,也就要整形成B igTable的样子。
也就是说,只要能把来源数据表的数据,整形成B igTable的样子,就能用这一个模板显示出来。
而不用管来源表从哪里来,表名是什么,有几个字段(但是字段数目需要小于等于6),字段名是什么,有多少数据。
c#水晶报表

目前的商业工具如水晶报表,ActiveReport等,都提供了灵活,强大的功能,但是对于比较特殊化的表格,特别是国内的一些应用,都是一个个的格子组成的,这样要是用线来一根根画就比较麻烦,但是这类工具还都不提供表格化的报表布局定义方式。
一个很好的选择是VS2005的客户端报表(RDLC),但是在某几个方面还是不够灵活,例如,灵活性有限制,要想自己编码实现一些复杂逻辑还是有困难;要VS2005,对于一些还在使用VS2003的项目就只有眼馋的份了。
用Excel来实现,优点在于页面布局设计灵活,同时使用代码来操作数据要更灵活,更精确。
下面是一个简单的例子,打开一个定义好的Excel文件,这个文件是作为报表的模板,然后向模板的指定格子里填充数据,形成一个报表,在web方式下可以按照指定的命名方式在服务器上生成一个excel 文件,之后传送到客户端,由客户端启动excel进行打印。
Excel.Application m_objExcel = null;Excel._Workbook m_objBook = null;Excel.Sheets m_objSheets = null;Excel._Worksheet m_objSheet = null;Excel.Range m_objRange = null;object m_objOpt = System.Reflection.Missing.Value;try{m_objExcel = new Excel.Application();m_objBook = m_objExcel.Workbooks.Open("z:\\Book1.xls", m_objOpt,m_objOpt, m_objOpt, m_objOpt, m_objOpt, m_objOpt, m_objOpt, m_objOpt, m_objOpt, m_objOpt, m_objOpt, m_objOpt);m_objSheets = (Excel.Sheets)m_objBook.Worksheets;m_objSheet = (Excel._Worksheet)(m_objSheets.get_Item(1));string[] info = new string[5] { "Cure", "26", "", "汉", "按时 ?放奥斯丁奥斯丁非是否奥斯丁非" };m_objRange = m_objSheet.get_Range("B1", m_objOpt);m_objRange.Value = info[0];m_objRange = m_objSheet.get_Range("E1", m_objOpt);m_objRange.Value = info[1];m_objRange = m_objSheet.get_Range("B2", m_objOpt);m_objRange.Value = info[2];m_objRange = m_objSheet.get_Range("E2", m_objOpt);m_objRange.Value = info[3];m_objRange = m_objSheet.get_Range("A3", m_objOpt);m_objRange.Value = info[4];m_objExcel.DisplayAlerts = false;m_objBook.SaveAs("z:\\Book2.xls", m_objOpt, m_objOpt,m_objOpt, m_objOpt, m_objOpt, Excel.XlSaveAsAccessMode.xlNoChange,m_objOpt, m_objOpt, m_objOpt, m_objOpt);}catch (Exception ex){MessageBox.Show(ex.Message);}finally{m_objBook.Close(m_objOpt, m_objOpt, m_objOpt);m_objExcel.Workbooks.Close();m_objExcel.Quit();System.Runtime.InteropServices.Marshal.ReleaseComObject(m_objBook);System.Runtime.InteropServices.Marshal.ReleaseComObject(m_objExcel);m_objBook = null;m_objExcel = null;GC.Collect();}可以看到,使用Excel要进行一部分的编码,好在这部分还不太复杂,但是最大的问题就在于当报表需求变更时,要重新编译部署,而且当格子特别多的时候,要这样硬编码还是挺痛苦的一件事。
水晶报表制作说明

BS报表制作向导一、制作报表样式1.新建水晶报表样式打开Visual Studio或水晶报表工具,点击菜单条中的文件—新建项目,在弹出的页面中选择其他语言-Visual J#-Crystal Reports应用程序修改名称和位置后,点击确定按钮,再在弹出的页面中选择作为空白报表,再点击确定按钮;如果已有一个水晶报表,要在现有项中再新增一个水晶报表样式,可以在解决方案资源管理器中在解决方案子主目录下,右键-添加新项,弹出以下页面,选择Crystal报表即可水晶报表工具Crystal Reports2008制作报表:工具栏文件->新建->空白报表/标准报表/交叉报表->数据库专家2.将报表数据源绑定数据库在显示的页面中,单击鼠标右键选择数据库-数据库专家在创建新连接中,点击OLE DB(ADO),弹出页面,提供程序中选择Microsoft OLE DB Provide for SQL Server,再点击下一步按钮,在弹出的页面中输入内容后,点击下一步按钮在弹出的页面中点击添加命令,输入SQL查询—报表所需字段(也可以是视图或存储过程),再点击确定按钮。
3.制作水晶报表A.工具箱--在左边工具箱中,可以选择工具画报表,文本对象(文本框及内容的输入),线条对象(画线),框对象(表格外面的框)水晶报表工具Crystal Reports2008:工具栏插入->文本对象/线/框B.字段--在字段中可以直接将要显示在报表中的字段拖放到报表中去C.合计的显示—选中要合计的字段,如金额,点击右键,插入-汇总在弹出的页面中,选择要汇总的字段和方式(求和,差,平均~~)点击确定后自动生成一个汇总字段,将该字段拖放到合计金额的位置即可水晶报表工具Crystal Reports2008:在“公式字段”新建“合计”,汇总字段为CalFee,拖动到页脚D.合计金额小写转换成大写—在右边字段中,选择公式字段,右键-新增(名为test),点击使用专家按钮,在弹出的页面中,选择报表自定义函数,再点击右键-新建,在弹出的页面中输入自定义函数有的名称(AmountToWord2),点击使用编辑器在下面的输入框中,输入以下函数(语法选择Basic语法)选择之前添加的公式字段test,在下面的输入框中输入以下内容(调用上面的函数)(语法选择Basic语法)Function CNMoney(ls As Number) As StringDim dx_sz As StringDim dx_dw As StringDim str_int As StringDim str_dec As StringDim dx_str As StringDim fu As StringDim a As StringDim b As StringDim c As StringDim d As StringDim b2 As StringDim num_int As NumberDim num_dec As NumberDim len_int As NumberDim i As NumberDim a_int As NumberDim pp As Numberdx_sz = "零壹贰叁肆伍陆柒捌玖"dx_dw = "万仟佰拾亿仟佰拾万仟佰拾圆"If ls = 0 ThenCNMoney = "零圆整"Exit FunctionEnd IfIf ls < 0 Thenls = Abs(ls) --返回绝对值fu = "负"Elsefu = ""End Ifdx_str = CStr(ls) --返回表达式,该表达式已被转换为String 子类型的V ariant--Dim MyDouble, MyString--MyDouble = 437.324 - ' MyDouble 是双精度值。
水晶报表制作说明

BS报表制作向导一、制作报表样式1.新建水晶报表样式打开Visual Studio或水晶报表工具,点击菜单条中的文件—新建项目,在弹出的页面中选择其他语言-Visual J#-Crystal Reports应用程序修改名称和位置后,点击确定按钮,再在弹出的页面中选择作为空白报表,再点击确定按钮;如果已有一个水晶报表,要在现有项中再新增一个水晶报表样式,可以在解决方案资源管理器中在解决方案子主目录下,右键-添加新项,弹出以下页面,选择Crystal报表即可水晶报表工具Crystal Reports2008制作报表:工具栏文件->新建->空白报表/标准报表/交叉报表->数据库专家2.将报表数据源绑定数据库在显示的页面中,单击鼠标右键选择数据库-数据库专家在创建新连接中,点击OLE DB(ADO),弹出页面,提供程序中选择Microsoft OLE DB Provide for SQL Server,再点击下一步按钮,在弹出的页面中输入内容后,点击下一步按钮在弹出的页面中点击添加命令,输入SQL查询—报表所需字段(也可以是视图或存储过程),再点击确定按钮。
3.制作水晶报表A.工具箱--在左边工具箱中,可以选择工具画报表,文本对象(文本框及内容的输入),线条对象(画线),框对象(表格外面的框)水晶报表工具Crystal Reports2008:工具栏插入->文本对象/线/框B.字段--在字段中可以直接将要显示在报表中的字段拖放到报表中去C.合计的显示—选中要合计的字段,如金额,点击右键,插入-汇总在弹出的页面中,选择要汇总的字段和方式(求和,差,平均~~)点击确定后自动生成一个汇总字段,将该字段拖放到合计金额的位置即可水晶报表工具Crystal Reports2008:在“公式字段”新建“合计”,汇总字段为CalFee,拖动到页脚D.合计金额小写转换成大写—在右边字段中,选择公式字段,右键-新增(名为test),点击使用专家按钮,在弹出的页面中,选择报表自定义函数,再点击右键-新建,在弹出的页面中输入自定义函数有的名称(AmountToWord2),点击使用编辑器在下面的输入框中,输入以下函数(语法选择Basic语法)选择之前添加的公式字段test,在下面的输入框中输入以下内容(调用上面的函数)(语法选择Basic语法)Function CNMoney(ls As Number) As StringDim dx_sz As StringDim dx_dw As StringDim str_int As StringDim str_dec As StringDim dx_str As StringDim fu As StringDim a As StringDim b As StringDim c As StringDim d As StringDim b2 As StringDim num_int As NumberDim num_dec As NumberDim len_int As NumberDim i As NumberDim a_int As NumberDim pp As Numberdx_sz = "零壹贰叁肆伍陆柒捌玖"dx_dw = "万仟佰拾亿仟佰拾万仟佰拾圆"If ls = 0 ThenCNMoney = "零圆整"Exit FunctionEnd IfIf ls < 0 Thenls = Abs(ls) --返回绝对值fu = "负"Elsefu = ""End Ifdx_str = CStr(ls) --返回表达式,该表达式已被转换为String 子类型的V ariant--Dim MyDouble, MyString--MyDouble = 437.324 - ' MyDouble 是双精度值。
水晶报表公式必读【范本模板】

水晶报表公式必读水晶报表公式使用必读一、公式组件二、公式语法三、公式类型---—————-——--———--———-—-———-—-—-------————-———--———--——-——----——公式包含两个关键部分:组件和语法。
组件是创建公式所添加的部分,而语法是组织组件所遵循的规则。
在Crystal Reports 中有几种不同种类的公式:报表、格式化、选定、搜索、运行总计条件和警报公式.报表中的多数公式为报表公式和条件格式化公式。
-----——--—--—-—-—-—-——————-—-—-—-—----—————--—--——--——---——-——-—一、公式组件在Crystal Reports 中创建公式与在任何电子数据表应用程序中创建公式类似。
可以在公式中使用下列组件:字段示例:{客户。
客户名}、{客户。
去年销售额}数字示例:1、2、3.1416Text示例:“数量”、“:”、“您的文本"运算符示例:+(加)、/(除)、-x(求负)运算符是可以在公式中使用的操作。
函数示例:Round (x)、Trim (x)函数执行求平均值、求和与计数之类的计算。
列出所有可用的函数,其参数一并列出,并根据用途排列。
自定义函数示例:cdFirstDayofMonth、cdStatutoryHolidays自定义函数提供了一种共享和重复使用公式逻辑的途径。
它们可存储在Crystal 储备库中,而后可将其添加到报表中.一旦自定义函数添加到报表后,当创建公式时,用户就可在“公式专家”中使用自定义函数。
控制结构示例:“If”和“Select"、“For”循环组字段值示例:Average (fld, condFld)、Sum (fld,condFld, "条件”)组字段值对组进行汇总。
例如,可以使用组字段值来得出各个组在总计中所占百分比。
其它公式示例:{@GrossProfit}、{@QUOTA}有关详细信息,请参阅公式语法.-——-—--——--—-—--——-------——-———---—-—-—--——-—------—----------——二、公式语法语法规则用于创建正确的公式。
水晶报表的5种格式

水晶报表的5种表格设计模式概述与国外不同,国内的报表多以表格为主,所以用水晶报表实现表格虽然不太方便,但必须面对!组成表格的框线分为上框线、下框线、左框线、右框线、内部横框线、内部竖框线六种,而上框线、下框线、内部横框线又属于横框线,左框线、右框线、内部竖框线又属于竖框线。
在水晶报表里可以通过线、框、对象边框来实现,且听我慢慢道来……目录一、准线协助1. 对象未动,准线先行。
2. 使用准线对齐表格的框线。
3. 使用准线对齐行、列。
4. 使用准线定位行、列。
5. 使用准线调整列宽和行高。
二、多节框1. 绘制表格的外部框线。
2. 绘制表格的内部横框线。
3. 绘制表格的内部竖框线。
三、节内线1. 将表格的标题行和数据行分离,分别绘制表格框线。
2. 绘制标题行部分的表格框线。
3. 绘制数据行部分的表格框线。
四、多节定位1. 防止可变长度的对象相互覆盖。
2. 防止数据库字段和下框线相互覆盖。
五、对象边框1. 用对象边框模拟表格的框线。
2. 将表格的标题行和数据行分离,并用对象边框模拟表格框线。
3. 用文本对象的边框模拟标题行部分的表格框线。
4. 用数据库字段的边框模拟数据行部分的表格框线。
一、准线协助1. 对象未动,准线先行。
准线是一些非打印线条,可以将其放在"设计"选项卡和"预览"选项卡上的任何位置以帮助对齐。
它们具有对齐属性,使对象自动与其对齐。
对齐功能不仅使您能够轻松加精确地对齐报表对象,而且还可以同时对多个对象重新定位并调整大小。
(1) 显示、插入、移动和删除准线①显示准线选择"视图"菜单上的"准线"命令。
使用"设计"命令可以在"设计"选项卡中显示或隐藏准线。
使用"预览"命令可以在"预览"选项卡中显示或隐藏准线。
注意:在"预览"选项卡上,必须选择一个对象才能看到准线。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
通用水晶报表模板创建实例
1.背景目的
当有一大批报表需要你通过水晶报表来实现其打印、导出功能时,你不得不为这些具有相似结构的报表创建一一对应模板(rpt文件)而感到烦恼,其实,对于每一个编程人员来说,内心早就有一种想法:能不能通过一个通用的报表模板来实现这些报表所需要的功能呢?下面就从这个念头入手,解决这个烦人的问题。
2.方法思路
仔细研究一下水晶报表模板rpt的文件结构,主要有以下四个方面:
一、数据源设置
二、数据字段绑定
三、特殊字段应用
四、文本对象设置
数据源的设置需要通过绑定一个DataSet文件,对于不同的报表,具有不同的报表数据结构,所以问题的关键所在就是要统一一个具有相同结构的DataSet文件,把它作为水晶报表的唯一数据源。
在具有一个统一的数据源结构之后,我们需要做到的主要有两点:
一、控制报表数据传入报表的时候我们可以将传入的DataSet数据集的表结构都转换成跟DataSet文件一样的结构(比如表名、字段名和字段数的转换);
二、在水晶报表模板中用未绑定字段和文本对报表结构进行构造。
3.创建步骤
通过上面的思路分析,我们大致已经知道了实现统一报表模板所需要做事项,下面进行具体操作:
一、准备工作
我们都知道,做每件事情必定是有得有失的,主要是得要多与失,并达到我们的理想目标,在统一报表模板的时候,我们必定会失去了每个报表的灵活显示特点,所以一开始,我们就要为这个统一的报表模板设定一个最大的字段数和实际显示数,这些都必须进行固定化,在这里,我们可以设置最大字段数 MaxColumnNum=15,实际显示数为ShowColumnNum=11。
注:最大字段数大于实际显示数是为了以后的报表扩充升级做准备的。
二、创建数据集文件(rptDataSet.xsd)
创建表名为Table1表,有15个字段(与上面的最大字段数对应),字段名为rptField1、rptField2、rptField3……rptField15,全部字段的类型都设置为string。
三、创建水晶报表模板文件(rptModel.rpt)
在创建的水晶报表模板里面设置报表的数据源为rptDataSet里面的Table1。
(1)在页眉先插入一个大的文本对象,命名为rptTitle,作用是显示报表标题,
然后在其下面插入11个文本对象,分别命名为rtpTitleStr1、rtpTitleStr2、
rtpTitleStr3……rtpTitleStr11,作用是显示报表列标题。
(2)在详细资料里面插入11个未绑定字段,分别命名为UnboundString1、
UnboundString2、UnboundString3……UnboundString11,作用是显示报表数据。
在UnboundString1上面右键,然后编辑公式如下:
WhileReadingRecords;
StringVar x1:={Table1.rptField1};
其它未绑定字段可以参照这种格式绑定其它的表字段。
四、创建报表显示文件(rptView.aspx)
在aspx文件中添加CrystalReportViewer控件CrystalReportViewer1。
双击页面打开对应的rptView.aspx.cs程序文件,然后在添加一下代码://实例化billsreportTest对象rptDoc
SDCenter.Report.billsreportTest rptDoc = new SDCenter.Report.billsreportTest();
//改变dsTmp(报表数据集)表结构的字段名,已rptField+1(2、3....)的形式命名
for(int i=0;i<dsTmp.Tables[0].Columns.Count;i++)
{
dsTmp.Tables[0].Columns[i].ColumnName="rptField"+(i+1);
}
//以最大字段数15为上限,为dsTmp添加缺少的字段
int ColumnsAdd=15-Convert.ToInt32(dsTmp.Tables[0].Columns.Count);
for(int k=0;k<ColumnsAdd;k++)
{
dsTmp.Tables[0].Columns.Add("rptField"+(15-k));
}
//rptDoc绑定数据源
rptDoc.SetDataSource(dsTmp);
//创建报表模板中的文本对象rptTitle,并对其进行赋值
TextObject rptTitleText=rptDoc.ReportDefinition.ReportObjects["rptTitle"] as TextObject;
rptTitleText.Text=”报表标题”;
//对报表模板格式进行初始化定义
string rptTitleStr=Session["rptTitleStr"].ToString();
string [] rptTitleArray=rptTitleStr.Split(',');
string rptShowTitleTmp=Session["rptShowTitle"].ToString();
int j=0;
for(int i=0;i<rptShowTitleTmp.Length;i++)
{
if(Convert.ToInt32(rptShowTitleTmp.Substring(i,1))>0)
j+=1;
}
if(j==0)
j=1;
int rptWidth=16410,rptLeftBegin=120;
int ColumnsShow=j;
int ColumnsNoShow=11-j;
int ColumnsWidth=Convert.ToInt32(rptWidth/j);
for(int h=0;h<11;h++)
{
//在定义报表模板内最大列为11的情况下,隐藏没有关联的列及其对应列标题
if(Convert.ToInt32(rptShowTitleTmp.Substring(h,1))==0)
{
TextObject
rtpTitleStrText=rptDoc.ReportDefinition.ReportObjects["rtpTitleStr"+(h+1)] as TextObject; rtpTitleStrText.ObjectFormat.EnableSuppress=true;
FieldObject
rptDataStrText=rptDoc.ReportDefinition.ReportObjects["UnboundString"+(h+1)] as FieldObject; rptDataStrText.ObjectFormat.EnableSuppress=true;
}
else
{
//平均报表模板显示列的宽度
try
{
TextObject
rtpTitleStrText=rptDoc.ReportDefinition.ReportObjects["rtpTitleStr"+(h+1)] as TextObject; rtpTitleStrText.Width=ColumnsWidth;
rtpTitleStrText.Left=rptLeftBegin;
rtpTitleStrText.Text=rptTitleArray[h];
FieldObject
rptDataStrText=rptDoc.ReportDefinition.ReportObjects["UnboundString"+(h+1)] as FieldObject; rptDataStrText.Width=ColumnsWidth;
rptDataStrText.Left=rptLeftBegin;
rptLeftBegin+=ColumnsWidth;
}
catch(System.Exception e1)
{
}
}
}
//CrystalReportViewer1绑定数据源
CrystalReportViewer1.ReportSource = rptDoc;
CrystalReportViewer1.DataBind();
4.不足之处与优化
一、有最大字段数与字段显示数的限制
二、可以通过传输宽度大小参数来控制报表列的显示宽度。