📄 vb4.htm
字号:
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<!-- saved from url=(0056)http://www.pconline.com.cn/experience/subject/VB/vb4.htm -->
<HTML><HEAD><TITLE>|><| 太平洋电脑信息网</TITLE><!-- #BeginTemplate "/Templates/0723.dwt" --><!-- #BeginEditable "doctitle" --><!-- #EndEditable -->
<META content="text/html; charset=gb2312" http-equiv=Content-Type><LINK
href="vb4.files/text.css" rel=stylesheet>
<STYLE type=text/css>.sfont {
LINE-HEIGHT: 18pt
}
</STYLE>
<META content="MSHTML 5.00.2014.210" name=GENERATOR></HEAD>
<BODY bgColor=#ffffff leftMargin=0 topMargin=0>
<TABLE align=center border=0 cellPadding=0 cellSpacing=0 width="100%">
<TBODY>
<TR>
<TD vAlign=top width="100%">
<TABLE border=0 cellPadding=0 cellSpacing=0 width="100%">
<TBODY>
<TR bgColor=#303880>
<TD><A href="http://www.pconline.com.cn/"><IMG alt=太平洋电脑信息网 border=0
height=18 hspace=30 src="vb4.files/txtpconline.gif"
width=96></A><IMG height=10 src="vb4.files/blank.gif"
width=400></TD></TR></TBODY></TABLE></TD>
<TD align=right background=vb4.files/bw.gif noWrap width=130><IMG
height=26 src="vb4.files/bw.gif" width=10><A
href="http://www.pconline.com.cn/sitemap/"><IMG alt=网站地图 border=0
height=26 src="vb4.files/sitemap.gif" width=21></A><IMG height=26
src="vb4.files/bw.gif" width=10><A
href="http://www.pconline.com.cn/tpy/"><IMG alt=关于太平洋 border=0 height=26
src="vb4.files/aboutus.gif" width=21></A><IMG height=26
src="vb4.files/bw.gif" width=10><A
href="http://www.pconline.com.cn/tpy/tariff.html"><IMG alt=与我们联系 border=0
height=26 src="vb4.files/contact.gif" width=21></A><IMG height=26
src="vb4.files/bw.gif" width=10></TD></TR></TBODY></TABLE><BR>
<TABLE align=center border=0 cellPadding=0 cellSpacing=0 width=760>
<TBODY>
<TR>
<TD bgColor=#666666><IMG height=1 src="vb4.files/blank.gif" width=1></TD>
<TD bgColor=#666666><IMG height=1 src="vb4.files/blank.gif" width=1></TD>
<TD> </TD>
<TD colSpan=2 noWrap><A
href="http://www.pconline.com.cn/experience/index.html"><IMG
align=absBottom alt=企业之窗 border=0 height=15
src="vb4.files/txtexperience.gif" width=68></A> <A
href="http://www.pconline.com.cn/">首 页</A> <A
href="http://www.pconline.com.cn/market/">今日报价</A> <A
href="http://www.pconline.com.cn/recommend/">产品推介</A> <A
href="http://www.pconline.com.cn/yp/">企业之窗</A> <A
href="http://www.pconline.com.cn/news/">科技新闻</A> <A
href="http://www.pconline.com.cn/product/">产品查询</A> <A
href="http://www.pconline.com.cn/download/">软件下载</A></TD></TR>
<TR>
<TD><IMG height=1 src="vb4.files/blank.gif" width=1></TD>
<TD><IMG height=1 src="vb4.files/blank.gif" width=1></TD>
<TD><IMG height=1 src="vb4.files/blank.gif" width=21></TD>
<TD bgColor=#ffa000 colSpan=2><IMG height=1 src="vb4.files/blank.gif"
width=1></TD></TR>
<TR>
<TD bgColor=#666666><IMG height=1 src="vb4.files/blank.gif" width=1></TD>
<TD bgColor=#cdcdcd><IMG height=5 src="vb4.files/blank.gif" width=1></TD>
<TD align=right colSpan=3><IMG height=6 src="vb4.files/ffa000.gif"
width=1></TD></TR>
<TR>
<TD bgColor=#666666><IMG height=1 src="vb4.files/blank.gif" width=1></TD>
<TD align=right><A href="http://www.pconline.com.cn/"><IMG alt=太平洋电脑信息网
border=0 height=35 src="vb4.files/pconline.com.cn.gif" vspace=10
width=162></A></TD>
<TD> </TD>
<TD vAlign=bottom><!-- #BeginEditable "important_news" --><IMG height=40
src="vb4.files/blank.gif" width=350><!-- #EndEditable --></TD>
<TD align=right vAlign=top><!-- #BeginEditable "adv_top" --><IMG alt=广告位
height=43 src="vb4.files/icon.gif"
width=190><!-- #EndEditable --></TD></TR></TBODY></TABLE>
<TABLE align=center border=0 cellPadding=0 cellSpacing=0 width=760>
<TBODY>
<TR>
<TD bgColor=#666666 width=1><IMG height=1 src="vb4.files/blank.gif"
width=1></TD>
<TD vAlign=top width=170><!-- #BeginEditable "addons" --><!--替代为附加信息 --><!-- #EndEditable --></TD>
<TD bgColor=#666666 width=1><IMG height=1 src="vb4.files/blank.gif"
width=1></TD>
<TD><IMG height=1 src="vb4.files/blank.gif" width=21></TD>
<TD colSpan=3 vAlign=top width=566><!-- #BeginEditable "1" --><IMG
height=1 src="vb4.files/blank.gif" width=566><BR><IMG height=1
src="vb4.files/666666.gif" width=420><BR><IMG height=13
src="vb4.files/blank.gif" width=1><A
href="http://www.pconline.com.cn/experience/">经验共享</A> > <SPAN
class=greenb><A
href="http://www.pconline.com.cn/experience/subject/VB/index.html">专题教程</A></SPAN><A
href="http://www.pconline.com.cn/experience/subject/VB/index.html">
VB专区</A>> <BR><IMG height=1 src="vb4.files/666666.gif" vspace=1
width=420><BR>
<P align=center><B><FONT color=#000066><SPAN
class=sfont>利用VB设计打印复杂报表</SPAN></FONT></B> <SPAN
class=sfont><BR></SPAN></P>
<P align=center><SPAN class=sfont>方云波 </SPAN></P>
<P><SPAN class=sfont><FONT color=#ffffff>----</FONT>
数据库管理系统的开发人员经常感叹的一个问题就是:我们中国人的报表太复杂了!无规则、嵌套、斜线、交叉线等历来都是困挠开发人员的最大问题。设计一个数据库固然有一定的技巧,设计数据操作也固然需要一定的逻辑分析能力,但这些问题对一般的开发人员来说应该是不成为问题的。用户可是不管你采用了多么灵活的算法多么方便的操作,他们最感兴趣的是最后他们出来的报表如何漂亮,出报表的操作如何简单(最好是一个按钮解决所有的问题)。笔者在开发数据库管理系统方面也稍有些经验,从FoxPro、Delphi、PowerBuilder一直到现在用的VB,都遇到过设计打印报表的问题,这些软件在设计报表的过程中可谓各有千秋,我这里不一一细说。我在这里只向大家介绍一种我迄今为止最为满意的一种设计打印报表的方法:利用VB操作EXCEL来生成复杂的报表。
</SPAN>
<P><SPAN class=sfont><FONT color=#ffffff>----</FONT> <B>一.
用VB创建外部EXCEL对象</B> </SPAN>
<P><SPAN class=sfont><FONT color=#ffffff>----</FONT> 大多数大型 ActiveX-enabled
应用程序和其它 ActiveX
部件,在它们的对象层次中都提供了一个顶层外部可创建对象。该对象提供了对该层次中其它对象的访问,并且还提供对整个应用程序起作用的方法和属性。
</SPAN>
<P><SPAN class=sfont><FONT color=#ffffff>----</FONT> 例如,每个 Microsoft
Office 应用程序提供一个顶层 Application 对象。下面语句显示了对Microsoft Excel的 Application
对象的引用: </SPAN><PRE><SPAN class=sfont>
Dim xlApp As Excel.Application
Set xlApp = New Excel.Application
</SPAN></PRE>
<P><SPAN class=sfont><FONT color=#ffffff>----</FONT>
然后,可以用这些变量来访问在EXCEL应用程序中的从属对象、以及这些对象的属性和方法。例如: </SPAN><PRE><SPAN class=sfont>
Set xlApp = CreateObject("Excel.Application")
‘激活EXCEL应用程序
xlApp.Visible = False ‘隐藏EXCEL应用程序窗口
Set xlBook = xlApp.Workbooks.Open(strDestination)
‘打开工作簿,strDestination为一个EXCEL报表文件
Set xlSheet = xlBook.Worksheets(1)
‘设定工作表
</SPAN></PRE>
<P><SPAN class=sfont><FONT color=#ffffff>----</FONT> <B>二. 用EXCEL
97设计报表的模版文件</B> </SPAN>
<P><SPAN class=sfont><FONT color=#ffffff>----</FONT> EXCEL
97是一个非常优秀的创建报表的工具。它提供的单元格任意合并、拆分和绘图功能基本上能够满足设计所有复杂报表的需求。它对任意一个单元格的格式随意控制,更为随心所欲地设计报表提供了强大的支持。
</SPAN>
<P><SPAN class=sfont><FONT color=#ffffff>----</FONT>
根据用户提供的报表,我们可以很快在EXCEL里生成模版文件。所谓生成模版文件只是为了满足用户多方面的需求而设计的。也是为了适合报表以后的更改而做的一点预备工作。例如用户需要打印几百张职工履历表,但其格式都是一致的,并且随着时间和实际情况的变化,表格格式有可能需要改变,我们设计一个模版文件显然可以“以不变应万变”了。
</SPAN>
<P><SPAN class=sfont><FONT color=#ffffff>----</FONT>
生成工作表时我们应当记录下要填充内容的单元格编号和该单元格内要填充的数据字段。这样形成一个表格,在写程序时一目了然。如: </SPAN><PRE><SPAN class=sfont>
Cell(4,2) 职工姓名 Cell(6,6) 毕业学校
Cell(4,4) 职工性别 Cell(6,7) 所学专业
Cell(4,6) 职工民族 Cell(6,9) 工作时间
(表一)
</SPAN></PRE>
<P><SPAN class=sfont><FONT color=#ffffff>----</FONT>
在程序里我们当然不要对模版文件进行操作了,我们只需要对模版文件的一个拷贝进行操作就行(这也是我们设计模版文件的一个目的和好处)。如下面的例子:
</SPAN><PRE><SPAN class=sfont>
Dim strSource, strDestination As String
strSource = App.Path & "\Excels\RegisterFee.xls"
‘RegisterFee.xls就是一个模版文件
strDestination = App.Path & "\Excels\Temp.xls"
FileCopy strSource, strDestination
‘将模版文件拷贝到一个临时文件
</SPAN></PRE>
<P><SPAN class=sfont><FONT color=#ffffff>----</FONT> <B>三. 生成工作表内容</B>
</SPAN>
<P><SPAN class=sfont><FONT color=#ffffff>----</FONT>
有了上述两步工作的铺垫,我们下面接着就只要根据(表一)的格式给各单元格赋值了。如: </SPAN><PRE><SPAN class=sfont>
datPrimaryRS.Recordset.MoveFirst
‘datPrimaryRS为Data控件
If IsNull(datPrimaryRS.Recordset!姓名) = False Then
xlSheet.Cells(4, 2) = datPrimaryRS.Recordset!姓名
End If
If IsNull(datPrimaryRS.Recordset!性别) = False Then
xlSheet.Cells(4, 4) = datPrimaryRS.Recordset!性别
End If
If IsNull(datPrimaryRS.Recordset!民族) = False Then
xlSheet.Cells(4, 6) = datPrimaryRS.Recordset!民族
End If
………………
</SPAN></PRE>
<P><SPAN class=sfont><FONT color=#ffffff>----</FONT> <B>四. 打印报表</B>
</SPAN>
<P><SPAN class=sfont><FONT color=#ffffff>----</FONT>
生成了工作表后,就可以对EXCEL发出打印指令了。 </SPAN>
<P><SPAN class=sfont><FONT color=#ffffff>----</FONT>
注意在执行打印操作之前应该对EXCEL临时文件执行一次保存操作,以免在退出应用程序后EXCEL还提示用户是否保存已修改的文件,让用户觉得莫名其妙。如下语句:
</SPAN><PRE><SPAN class=sfont>
xlBook.Save ‘保存文件
xlSheet.PrintOut ‘执行打印
xlApp.Quit ‘退出EXCEL
</SPAN></PRE>
<P><SPAN class=sfont><FONT color=#ffffff>----</FONT>
至此读者应该看到,我们设计的报表打印是通过EXCEL程序来后台实现的。用户根本看不到具体过程,他们只看到一张张漂亮的报表轻易地被打印出来了。
</SPAN>
<P align=right><A
href="http://www.pconline.com.cn/experience/subject/VB/index.html">----更多的文章</A>
<!-- #EndEditable --></P></TD></TR></TBODY></TABLE>
<TABLE align=center border=0 cellPadding=0 cellSpacing=0 width=760>
<TBODY>
<TR>
<TD bgColor=#666666 width=1><IMG height=1 src="vb4.files/blank.gif"
width=1></TD>
<TD align=right vAlign=bottom width=170><IMG height=10
src="vb4.files/blank.gif" width=170><BR></TD>
<TD bgColor=#666666 width=1><IMG height=1 src="vb4.files/blank.gif"
width=1></TD>
<TD width=21><IMG height=1 src="vb4.files/blank.gif" width=21></TD>
<TD bgColor=#eeeeee width=566><IMG height=10 src="vb4.files/blank.gif"
width=566><BR>版权所有©1999 太平洋电脑信息网<BR><FONT
face="Arial, Helvetica, sans-serif"><A
href="mailto:exp@pconline.com.cn">exp@pconline.com.cn</A></FONT> <IMG
height=1 src="vb4.files/hhvisit.html" width=1> </TD></TR></TBODY></TABLE><!-- #EndTemplate --></BODY></HTML>
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -