首先,须在项目里引用: 添加引用-Com-Microsoft Excel 9.0 Object Library (这是EXCEL2000)
创新互联主要从事网站建设、网站设计、网页设计、企业做网站、公司建网站等业务。立足成都服务潜江,十多年网站建设经验,价格优惠、服务专业,欢迎来电咨询建站服务:18980820575
1 打开Excel: dim myexcel as new Excel.Application() myexcel.visible=true
2 添加新的工作簿: myexcel.Workbooks.add()
3 设定第二个工作表为活动工作表: myexcel.worksheets(2).Acivate()
4 打开指定的Excel文件: myexcel.workbooks.open("c:\my.xls")
5 显示Excel窗口: myexcel.visible=true
6 更改Excel的标题栏: myexcel.caption="欢迎,欢迎!"
7 为Excel的单元格赋值: myexcel.cells(1,4).value=100 此语句使Excel当前工作表的第一行第四列,即D1单元格等于100, 也可以这样写: myexcel.Range("D1").value=100
8 设置指定列的宽度(单位:字符个数): myexcel.ActiveSheet.colums(1).columnwidth=20 设定当前工作表第1列的宽度为20
9 设置指定行的高度(单位:磅): myexcel.ActiveSheet.rows(1).rowHeight=1/0.035 1磅 =0.035厘米 设置第1行的高度为1CM
10 插入分页符: myexcel.Activesheet.rows(20).pagebreak=1 在第20行前插入分页符
11 删除分页符: myexcel.Activesheet.columns(20).pagebreak=0 在第20列前删除分页符
12 指定边框线的宽度: myexcel.Activesheet.range("B3:D3").borders(1).weight=3 其中borders参数指定单元格边框的位置: 1:左 2:右 3:顶 4:底 5:斜\ 6:斜/
13 指定边框线条的类型: myexcel.Activesheet.range("B1:D3").borders(2).linestyle=1 此语句将当前工作表的B1:D3单元格的右边框设置为实线 linestyle参数: 1:细实线 2:细虚线 3:点虚线 4:双细实线
14 设置页脚: myexcel.activesheet.pagesetup.centerfooter="第p页" 注意:设置页眉页脚时要保证计算机上装有打印机,否则出错!
15 设置页眉: myexcel.activesheet.pagesetup.centerfooter="第p页"
16 设置页眉到顶断距离为2cm: myexcel.Activesheet.pagesetup.Headermargin=2/0.035
17 设置页脚到底端距离为2cm: myexcel.Activesheet.pagesetup.Footermargin=2/0.035
18 设置顶边边距为2cm: myexcel.Activesheet.pagesetup.topmargin=2/0.035
19 设置底边边距为2cm: myexcel.Activesheet.pagesetup.Bottommargin=2/0.035
20 设置左边边距为2cm: myexcel.Activesheet.pagesetup.Leftmargin=2/0.035
21 设置右边边距为2cm: myexcel.Activesheet.pagesetup.Rightmargin=2/0.035
22 设置页面水平居中: myexcel.activesheet.pagesetup.CenterHorizontally=true
23 设置页面垂直居中: myexcel.activesheet.pagesetup.Centervertically=true
24 设置页面纸张大小 (1,窄行 8.5*11 ;39 ,宽行 14*11): myexcel.activesheet.pagesetup.papersize=1
25 打印单元格网格线: myexcel.activesheet.pagesetup.PrintGridlines=true
26 复制整个工作表 : myexcel.activesheet.Usedrange.Copy
27 复制指定区域 : myexcel.activesheet.range("a1:b5").Copy
28 粘贴: myexcel.worksheets("sheet2").range("A1").PasteSpecial
29 在第2行前插入一行 : myexcel.activesheet.rows(2).Insert
30 在第2列前插入一列 : myexcel.Activesheet.Columns(2).Insert
31 合并 C4:D4 单元格: myexcel.Activesheet.Range("C4:D4").Merge()
32 自动调整第2列列宽: myexcel.activesheet.Columns(2).AutoFit
33 设置字体: myexcel.Activesheet.cells(2,1).font.name="黑体"
34 设置字体大小: myexcel.Activesheet.cells(2,1).font.size=25
35 设置字体为斜体: myexcel.Activesheet.cells(2,1).font.Italic=true
36 设置字体为粗体: myexcel.Activesheet.cells(2,1).font.Bold=true
37 清除单元格内容: myexcel.activesheet.cells(2,1).ClearContents
38 打印预览工作表: myexcel.Activesheet.PrintPreview
39 打印工作表: myexcel.Activesheet.Printout
40 工作表另存为: myexcel.ActiveWorkbook.saveas("C:\book2.xls")
41 放弃存盘: myexcel.ActiveWorkbook.saved=false
42 关闭工作簿: myexcel.Workbooks.close
43 退出 Excel: myexcel.quit
清楚了这些命令,操作excel不就变的很轻松了!
VB.net复制Word文档内容?建议可以参考下spire.doc for .net的教程文章:
C#/VB.NET 复制 Word 文档(这个文章描述的是复制word正文内容)
C#/VB.NET 复制 Word 页眉/页脚(复制Word页眉页脚)
复制水印:
Imports Spire.Doc
Namespace CopyWatermark_Doc
Class Program
Private Shared Sub Main(args As String())
'加载文档1
Dim doc1 As New Document()
doc1.LoadFromFile("input.docx")
'加载文档2
Dim doc2 As New Document()
doc2.LoadFromFile("target.docx")
'获取文档1的水印效果,设置到文档2
doc2.Watermark = doc1.Watermark
'保存文档2
doc2.SaveToFile("CopyWatermark.docx", FileFormat.Docx2013)
System.Diagnostics.Process.Start("CopyWatermark.docx")
End Sub
End Class
End Namespace
这代码里面的路径是以将结果文档保存在项目文件下,也可以自己自定义路径
1 打开Excel dim myexcelas new Excel.Application() myexcel.visible=true
2 添加新的工作簿myexcel.Workbooks.add()
3 设定第二个工作表为活动工作表myexcel.worksheets(2).Acivate()
4 打开指定的Excel文件myexcel.workbooks.open(“c:\my.xls”)
5 显示Excel窗口myexcel.visible=true
6 更改Excel的标题栏myexcel.caption=“欢迎,欢迎!”
7 为Excel的单元格赋值myexcel.cells(1,4).value=100 此语句使Excel当前工作表的第一行第四列,即D1单元格等于100, 也可以这样写: myexcel.Range(“D1”).value=100
8 设置指定列的宽度(单位:字符个数)myexcel.ActiveSheet.colums(1).columnwidth=20 设定当前工作表第1列的宽度为20
9 设置指定行的高(单位:磅)myexcel.ActiveSheet.rows(1).rowHeight=1/0.035 1磅 =0.035厘米设置第1行的高度为1CM
10 插入分页符 myexcel.Activesheet.rows(20).pagebreak=1在第20行前插入分页符
11 删除分页符myexcel.Activesheet.columns(20).pagebreak=0 在第20列前删除分页符
12 指定边框线的宽度myexcel.Activesheet.range(“B3:D3”).borders(1).weight=3 其中borders参数指定单元格边框的位置:1:左 2:右 3:顶 4:底 5:斜\ 6:斜/
13 指定边框线条的类型 myexcel.Activesheet.range(“B1:D3”).borders(2).linestyle=1此语句将当前工作表的B1:D3单元格的右边框设置为实线 linestyle参数: 1:细实线 2:细虚线 3:点虚线 4:双细实线
14 设置页脚myexcel.activesheet.pagesetup.centerfooter=“第p页” 注意:设置页眉页脚时要保证计算机上装有打印机,否则出错!
15 设置页眉myexcel.activesheet.pagesetup.centerfooter=“第p页”
16 设置页眉到顶断距离为2cmmyexcel.Activesheet.pagesetup.Headermargin=2/0.035
17 设置页脚到底端距离为2cmmyexcel.Activesheet.pagesetup.Footermargin=2/0.035
18 设置顶边边距为2cmmyexcel.Activesheet.pagesetup.topmargin=2/0.035
19 设置底边边距为2cmmyexcel.Activesheet.pagesetup.Bottommargin=2/0.035
20 设置左边边距为2cmmyexcel.Activesheet.pagesetup.Leftmargin=2/0.035
21 设置右边边距为2cmmyexcel.Activesheet.pagesetup.Rightmargin=2/0.035
22 设置页面水平居中myexcel.activesheet.pagesetup.CenterHorizontally=true
23 设置页面垂直居中myexcel.activesheet.pagesetup.Centervertically=true
24 设置页面纸张大小 (1,窄行8.511 ;39 ,宽行1411) myexcel.activesheet.pagesetup.papersize=1
25 打印单元格网格线 myexcel.activesheet.pagesetup.PrintGridlines=true
26 复制整个工作表 myexcel.activesheet.Usedrange.Copy
27 复制指定区域 myexcel.activesheet.range(“a1:b5”).Copy
28 粘贴 myexcel.worksheets(“sheet2”).range(“A1”).PasteSpecial
29 在第2行前插入一行 myexcel.activesheet.rows(2).Insert
30 在第2列前插入一列 myexcel.Activesheet.Columns(2).Insert
31 合并 C4:D4 单元格 myexcel.Activesheet.Range(“C4:D4”).Merge()
32 自动调整第2列列宽 myexcel.activesheet.Columns(2).AutoFit
33 设置字体myexcel.Activesheet.cells(2,1).font.name=“黑体”
34 设置字体大小myexcel.Activesheet.cells(2,1).font.size=25
35 设置字体为斜体 myexcel.Activesheet.cells(2,1).font.Italic=true
36 设置字体为粗体 myexcel.Activesheet.cells(2,1).font.Bold=true
37 清除单元格内容myexcel.activesheet.cells(2,1).ClearContents
38 打印预览工作表myexcel.Activesheet.PrintPreview
39 打印工作表 myexcel.Activesheet.Printout
40 工作表另存为myexcel.ActiveWorkbook.saveas(“C:\book2.xls”)
41 放弃存盘 myexcel.ActiveWorkbook.saved=false
42 关闭工作簿 myexcel.Workbooks.close
43 退出 Excel myexcel.quit
44 纸张横向:myexcel.activesheet.PageSetup.OrientaTion=2(1纵向)
45 单元格居中:cells(2,1).HorizontalAlignment=Excel.XlHAlign.xlHAlignCenter 水平方向cells(2,1).VerticalAlignment=Excel.XlVAlign.xlVAlignCenter 垂直方向
打开CSDN APP,看更多技术内容
VB调用Excel软件实现打印预览功能
摘要:VB源码,报表打印,打印预览VB调用Excel软件实现打印预览功能,可以插入折线图,VB打印预览功能示例源码,分享给大家参考。
用vb操作EXCEL打印报表
最近使用vb来打印报表,打印出来的EXCEL一直无法上传到ftp 反复多次问题都没解决, 200 PORT command successful. Consider using PASV. 问题出在这,由于win10的防火墙的原因,关闭防火墙后问题得到解决. 转载于:...
继续访问
VB操作excel 格式设置及打印页面设置(精简)
langue:VB Set ExcelApp = CreateObject("Excel.Application") ’创建资源,建立连接 Set ExcelBook = ExcelApp.Workbooks.Open(“d:\pipo\index.htm") Set ExcelSheet = ExcelBook.Worksheet...
继续访问
vb.net excel操作:填充人事档案表并打印
节选自:《Visual Basic.Net 循序渐进》【例 21.7】【项目:code21-007】填充人事档案表并打印。 本例使用到的Excel文件为:职员信息登记表.xlsx,如下图所示: 图21-10 职员信息登记表 窗体设计如下图所示(注意:为了演示方便,已经填充了数据): 图21-11 窗体设计 在本例中还需要掌握的知识: 1、插入图片到指定位置 Worksheet.Shapes.AddPicture(Filename, LinkToFile, SaveWithDocumen
继续访问
vb.net操作Excel常用命令
转载: 首先,须在项目里引用: 添加引用-Com-Microsoft Excel 9.0 Object Library (这是EXCEL2000) 1 打开Excel: dim myexcel as new Excel.Application() myexcel.visib...
继续访问
vb.net 如何实现报表打印_Excel如何实现分类别打印?创建组轻松实现
有朋友咨询个关于Excel打印数据问题,他的需求是这样的:下表中是某公司人员信息表,现在领导要求将表格分部门打印出来,每位员工核对个人信息并签字。需求很明确,就是将相同部门的人员打印到一张纸上。打印很简单,难点在于如何按每个部门去打印?如果部门较少的话可以将不同部门复制到不同插页中,再进行打印;但是如果部门较多的话,这种办法实在不可取;有小伙伴表示可以利用VBA技术将部门拆分到各个插页,在进行打印...
继续访问
最新发布 vb.net 教程 11-1 打印组件 3 PageSetupDialog
版权声明:本文为博主原创文章,转载请在显著位置标明本文出处以及作者网名,未经作者允许不得用于商业目的。 本节谈谈另外一个有关打印的对话框:PageSetupDialog,页面设置对话框 实际我们是通过这个对话框获得PageSetting,关于PageSetting在上一节有部分介绍,请参看 vb.net 教程 11-1 打印组件 PrintDialog 2 注意的是,使用PageSetupDialog需要绑定一个PrintDocument,在PageSetupDialog的Document属性处
继续访问
VB.NET使用EXCEL常见操作
首先,须在项目里引用: 添加引用Microsoft.Office.Interop.Excel Imports Excel = Microsoft.Office.Interop.Excel 1 打开Excel: Dim myexcel as new Excel.Application() myexcel.visible=true 2 添加新的工作簿: myexcel.Workbooks.ad
继续访问
【VB Excel】VB 操作Excel基本步骤
VB操作EXCEL,实现数据读取 1、定义Excel操作变量 Dim objExcelFile As Excel.Application Dim objWorkBook As Excel.Workbook Dim objImportSheet As Excel.Worksheet 2、打开Excel进程,并打开目标Exc...
继续访问
vba代码编程800例_如何设置Excel打印格式,学会这个VBA对象就可以随心所欲
NO.1 Excel如何设置打印格式使用vba可以做打印格式处理,如何做一个漂亮的打印页面,不外乎要设置打印表格的边框、版式、页眉、页角等等。那么怎样设置这些格式呢?NO.2 PageSetup对象vba编程用到Pagesetup对象,对表格打印进行设置。PageSetup对象有许多属性,下面图片里列出了大部分常用的属性,可以对照进行设置。具体方法下面举个例子来展示一下最终效果。PageSetup...
继续访问
vb.net操作excel文件
[转自] vb.net操作excel文件 要求将数据显示在Excel表中,并且要设好数据格式。虽说如此,真正实现了自己的功能,还是费了不少时间。相信还是有很多与我相似的人需要实现这种功能。那就做个小结吧。不妥之处,请指正哦。 1.添加引用–com—microsoft excel 11.0 object library 2在需要访问excel的过程中定义 dim exapp as excel.a
继续访问
VB.net使用PrintForm打印窗体
在VS2010中内置了了一个PowerPacks的扩展包,果然很好用啊,可以直接打印窗体内容 先从"工具箱"中拖一个PrintForm到设计好的窗体中 然后在窗体里加了个打印的按钮,对应代码如下 Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.
继续访问
热门推荐 开源:.NET环境下有关打印页面设置、打印机设置、打印预览对话框的实现与应用(2)
!--google_ad_client = "pub-0022674553583619";google_ad_width = 728;google_ad_height = 90;google_ad_format = "728x90_as";google_ad_type = "text_image";google_ad_channel ="";google_color_
继续访问
vb.net 设置打印纸张与页边距_机关公文格式设置规范(最新整理版)
本方法根据《党政机关公文格式国家标准》(GB/T9704-2012)制定。具体内容如下:一、办公软件要求适用于微软OFFICE—WORD文字处理软件。二、页面设置1.选择“文件”——“页面设置”选择“页边距”附签,上:3.7厘米,下:3.5厘米,左:2.8厘米,右:2.6厘米。2.选择“纸张”附签,“纸张大小”设成“A4”。3.选择“版式”附签,将“页眉和页脚”设置成“奇偶页不同”,在该...
继续访问
VB.NET EXCEL 操作
关于编写报表,职场中的人相信都会有所感慨,一份整洁、优美的报表会为你在上司面前增色不少,甚至加薪 :) ——大家都喜欢加薪,对吧?在本文中,将向大家介绍怎样利用MS Reporting Services 2005来创建一份报表,并用一个C#小程序来生成它。
本文假定读者已对Visual Studio 2005 IDE有了初步的了解,并能用C#编写代码,懂不懂MS Reporting Services都对理解本文没有关系,当然了,之前写过类似的报表,将有助于你更快地上手。好了,卷起袖子,准备开始吧!
请看图1,这份报表有多复杂?猜猜它需要多少时间完成?就复杂而言,它只是一份简单的、从NorthWind-Products (SQL Server 2000)中提取出来的报表;就时间而言,相信不会花你一整个小时吧。
图1
下面,我们开始创建报表,首先要编写一个生成报表的C#小程序。
第一步:创建一个Windows应用程序
选择文件菜单,新建-工程,从工程类型中选择C#,从右方对话框中选择Windows应用程序;在名称栏中,最好用一个表明程序用途的名字;在位置栏中,写明你想要保存的目录。完成之后,工程中会有一个Form1,我们就从对它的窗体设计器开始讲解。
像下面这样修改Form1的属性,当然也可以依个人喜好修改其他的属性:
Form1.Text = "MS Reporting Services 101 with Smart Client"
Form1.Size = 750, 300
第二步:为窗体(Form)添加报表查看器(Report Viewer)
什么是报表查看器,就像看DVD碟时需要一部DVD播放机一样,我们需要一个报表查看器来预览报表。
对初写报表的人来说,报表查看器可以说是赋予了报表生命,它不仅可预览输出,还可帮助将报表信息生成各种格式(PDF或Excel等等),打印出来更不在话下。
[span] 请按如下步骤在Form1上放置好报表查看器控件:
依次找到工具箱(ToolBox)-数据(Data)-报表查看器(ReportViewer),并把它拖到Form1上。这会创建一个名为reportViewer1新的实例。
通过设置reportViewer1.Dock = Fill,报表查看器将会填充窗体的整个区域,以显示报表。
在完成第一步与第二步之后,工程看起来应该如图2所示:
图2
第三步:为工程添加数据集(DataSet)
数据集是伴随报表查看器而来的,它保存并提供从数据源而来的原始数据,我们便可对这些原始数据进行处理或在C#程序中输出。
请依照如下步骤添加数据集:
从解决方案资源浏览器中选择添加-新项目-数据集,将其名称DataSet1修改dsProduct,并单击添加按钮完成。
添加一个数据表到新创建的数据集中。数据表实质上是用来加载报表数据的,在设计报表时,将会用到DataSet/DataTable中的相关信息。
以下为添加数据表到数据集(dsProduct)中:
从解决方案资源浏览器中双击dsProduct,将会打开设计视图,右键单击并选择添加-数据表。接着,单击表头修改名称为dtProductList,如图3:
图3
接下来开始为数据表(dtProductList)添加列,此时的设计视图应该如图4所示。右键单击dtProductList并选择添加——列(Column)。
图4
重复以上步骤添加以下列:
ProductName (String)
QuantityPerUnit (String)
UnitPrice (Double)
UnitsInStock (Double)
UnitValue (Double):一个基于UnitsInStock * UnitPrice的计算域
在添加列时,默认为String数据类型,添加完之后请转到属性窗口,修改相应的列为Double类型。
请看图5,现在的数据表看上去应该就像这样子了。同时,你也可查看属性窗口来修改数据类型。
图5
第四步:为工程添加报表
到目前为止,我们已经创建了工程,添加了报表查看器与数据集;现在,是时候创建一份整洁、优美的报表了。
需按照以下步骤生成报表(rptProductList.rdlc):
从解决方案资源浏览器中选择添加-新项目-报表,把名称Report1.rdlc修改为rptProductList.rdlc,并单击添加按钮完成。
工程可能会像图6这样;而添加完报表之后,就可以开始使用数据集(DataSet)进行设计了。
图6
无论你是第一次设计报表的新手,或是历经沙场老手,都必须与以下三种最基本的报表区域打交道:页眉(或叫表头)、页脚、表体。一般来说,报表在设计时,就应该有一个腹稿,如多大的纸张、应该怎样排版等等,通常都为信纸大小、纵向排版。当然了,如果能在动手之前,先在纸上画个草图,这样更好。可以回过头来看一下图1,在页眉,已经有了报表名及报表日期,表体中有产品的相关信息列表,而页脚中有页码。
那我们就从页眉开始吧。当添加新报表到工程时,默认情况下,在报表设计器中只能看到表体。右键单击报表设计器的表体之外处,选择页眉,这会在报表中添加一个页眉,可以随意调整页眉与表体区的高度,请看图7,图7中减少了表体的高度,增加了页眉的高度。
图7
在报表设计器的工具箱中,你可以看到用于设计报表的各种各样的控件。在我们这个例子中,会用到TextBox、Line和Table控件。现在我们开始设计页眉了。拖动两个TextBox并把它们置于页眉区,TextBox既能显示静态也能显示动态的数据,而Line控件用于把页眉从表体区中分隔出来。控件放置好之后,可以修改它们的属性以显示我们所需的值,例如可以指定一个TextBox为报表标题,而另一个TextBox显示当前日期。选择TextBox之后,可直接在其内输入静态文本。
请照以下修改标题TextBox:
Value = "Product List"
Color = Purple
而日期TextBox则修改为:
Value = "Run Data: " Today
Color = Purple
[span] 要注意了,日期TextBox的Value属性以"="符号打头,这代表它不是一个简单的静态文本,而是一个表达式,这个表达式是字符串"Run Date"与VB.NET脚本Today的结果。
另外多说一点,你可对报表中所有对象指定任何你想要的名称,一般对大多数控件而言,保持默认名称就好了,此处把标题TextBox的名称(即Name属性)指定为“txtTitle”。
参照图8,完成页眉设计之后,应该看起来就像这样子:
图8
现在是表体了。表体是承载信息的详细区域,是整个报表最重要的部分,而且你也看到了,当添加报表到工程时,表体已经自动添加了,我们只需要在上面放些控件就行了。
从传统意义上来说,表体区是用于显示详细数据的(在本例中,为产品信息),并且通常为多行信息,而随着报表上数据的增多,表体区也相应会扩展,但一般来说,报表只会设计为一页(信纸或A4纸大小)。
在表体区中,有三种最常用的控件:Table、Matrix、List,在本例中会使用Table控件。在报表设计界面中,拖动并把Table控件放置于表体区中,你会看到,这会生成一张三行三列的表,而中间一列则已被标记为:Header、Detail、Footer。
当你知道Table控件只不过是一堆TextBox的组合,是不是有点吃惊呢。对了,Talbe中的每个单元(Cell)都与TextBox一样,也就是说,可以在其中输入静态文本,或指定一个动态表达式。
在开始设计表体区之前,记得要多添加两列(我们的报表中有5列喔),添加列非常简单,依照以下步骤就行了:
1、 在表体区中选择Table控件。
2、 左键单击最右边一列的表头(此处假设你是从右边添加新列的)。
3、 右键单击表头,并选择“Insert Column to the Right”(在右边插入列)。
现在报表看起来应该像图9了,可以依据列中的数据随意调整列的宽度。
图9
大家多半也用过Excel或类似的东西吧,可以把Table控件看成是一张迷你工作表,在其中可以选择边框类型、改变任一单元格的字体等等。因此,所需做的就是依之前设想好的格式来设计表格。
我们从第一列开始,随后的每一列也一样,单击最上方的单元格并依次输入:
表头1:“Product Name”
表头2:“Packaging”
表头3:“Unit Price”
表头4:“Units in Stock”
表头5:“Stock Value”
而在接下来的详细数据区(即前面的Detail)中,需要输入表达式,其为dsProduct.dtProductInfo中的列,在此既可以手工输入表达式,也可以从数据源(Data Sources)工具箱(见图7左边)中拖放实现。
如果想要手工输入,请从数据区的第一列至最后一列,单击单元格并输入:
Detail 1: "=Fields!ProductName.Value"
Detail 2: "=Fields!QuantityPerUnit.Value"
Detail 3: "=Fields!UnitsInStock.Value"
Detail 4: "=Fields!UnitPrice.Value"
Detail 5: "=Fields!UnitsInStock.Value * Fields!UnitPrice.Value"
请留意Detail 5,它是一个对Units in Stock与Unit Value相乘计算之后的输出。另外提醒一点,如果是拖动列到Table控件中的数据区来实现的,此时如果表头为空,它会自动添加表头。
最后,在Table控件的页脚添加一累计栏,选择表体区第4与第5列的页脚单元格,输入:
单元格4:“Total Value:”
单元格5:"=SUM(Fields!UnitsInStock.Value * Fields!UnitPrice.Value)"
单击单元格5,这是使用了一个内置的SUM()函数来得到累计的结果。
最后只剩下页脚区了,在开始编写一些C#代码之前,还需完成报表的页脚,正如前面添加报表页眉一样,在打开的报表设计器中,右键单击并选择页脚(Page Footer),见图7。
拖动一个Line和TextBox控件置于页脚区,并在TextBox中输入以下表达式:
Value: ="Page: " Globals!PageNumber "/" Globals!TotalPages
大家可以看到,此处使用了PageNumber和TotalPages,两 者皆为全局变量。
现在,报表应该像图10这样了,此处,还改变了一点颜色,把数值类数据右对齐,把Table当作一张Excel工作表好了,可以随意调整为你想要的外观。
图10
快大功告成了!剩下的就是表达式生成器了。表达式生成器是Reporting Services中一个非常强大的工具,正如图11中所见,Stock Value是通过SUM函数计算得到的,DateSet中的所有数据都可以由“Fields!”关键字访问。
图11
第五步:编写赋予报表生机的C#代码
从解决方案资源浏览器中,选择Form1,右键单击并选择查看代码,为Form1_Load添加以下代码:
using System.Data.SqlClient;
using Microsoft.Reporting.WinForms;
private void Form1_Load(object sender, EventArgs e)
{
//声明连接字符串
string cnString = @"(local); Initial Catalog=northwind;"+"User Id=northwind;Password=northwind";
//如果使用标准安全属性,请改为以下代码
//string cnString = @"Data Source=(local);Initial Catalog=northwind; Integrated Security=SSPI";
//声明连接、命令对象及其他相关对象
SqlConnection conReport = new SqlConnection(cnString);
SqlCommand cmdReport = new SqlCommand();
SqlDataReader drReport;
DataSet dsReport = new dsProduct();
try
{
//打开连接
conReport.Open();
//准备连接对象以把获取的数据放入数据集
cmdReport.CommandType = CommandType.Text;
cmdReport.Connection = conReport;
cmdReport.CommandText = "Select TOP 5 * FROM Products Order By ProductName";
//从命令对象中读取数据
drReport = cmdReport.ExecuteReader();
//有了ADO.NET,可把读取来的数据直接加载到数据集中
dsReport.Tables[0].Load(drReport);
//关闭读取及连接
drReport.Close();
conReport.Close();
//为查看器提供本地报表数据
rpvAbraKaDabra.LocalReport.ReportEmbeddedResource =
"rsWin101.rptProductList.rdlc";
//准备报表数据源
ReportDataSource rds = new ReportDataSource();
rds.Name = "dsProduct_dtProductList";
rds.Value = dsReport.Tables[0];
rpvAbraKaDabra.LocalReport.DataSources.Add(rds);
//加载报表查看器
rpvAbraKaDabra.RefreshReport();
}
catch (Exception ex)
{
//显示错误信息
MessageBox.Show(ex.Message);
}
finally
{
//检查连接是否仍然打开,如果是,关闭它。
if (conReport.State == ConnectionState.Open)
{
conReport.Close();
}
}
}
看到这,大家可能会想,为什么在select查询语句中使用了“TOP 5”,此处只是作演示的目的,对输出作一限制,以得到如图1中的累计结果。另外,ReportDataSource的Name属性应总为“DataSet_DataTable”。
湖北新蓝海是一家专注于网络营销 网络推广的领头企业 ,已为武汉健民、华工激光、江西仁和等多家知名企业提供网络营销外包服务。详情请到各大搜索引擎中搜索“湖北新蓝海”