?? vb4.htm
字號(hào):
<!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>|><| 太平洋電腦信息網(wǎng)</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=太平洋電腦信息網(wǎng) 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=網(wǎng)站地圖 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=關(guān)于太平洋 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=與我們聯(lián)系 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=企業(yè)之窗 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/">今日?qǐng)?bào)價(jià)</A> <A
href="http://www.pconline.com.cn/recommend/">產(chǎn)品推介</A> <A
href="http://www.pconline.com.cn/yp/">企業(yè)之窗</A> <A
href="http://www.pconline.com.cn/news/">科技新聞</A> <A
href="http://www.pconline.com.cn/product/">產(chǎn)品查詢</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=太平洋電腦信息網(wǎng)
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/">經(jīng)驗(yàn)共享</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專區(qū)</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設(shè)計(jì)打印復(fù)雜報(bào)表</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>
數(shù)據(jù)庫管理系統(tǒng)的開發(fā)人員經(jīng)常感嘆的一個(gè)問題就是:我們中國人的報(bào)表太復(fù)雜了!無規(guī)則、嵌套、斜線、交叉線等歷來都是困撓開發(fā)人員的最大問題。設(shè)計(jì)一個(gè)數(shù)據(jù)庫固然有一定的技巧,設(shè)計(jì)數(shù)據(jù)操作也固然需要一定的邏輯分析能力,但這些問題對(duì)一般的開發(fā)人員來說應(yīng)該是不成為問題的。用戶可是不管你采用了多么靈活的算法多么方便的操作,他們最感興趣的是最后他們出來的報(bào)表如何漂亮,出報(bào)表的操作如何簡單(最好是一個(gè)按鈕解決所有的問題)。筆者在開發(fā)數(shù)據(jù)庫管理系統(tǒng)方面也稍有些經(jīng)驗(yàn),從FoxPro、Delphi、PowerBuilder一直到現(xiàn)在用的VB,都遇到過設(shè)計(jì)打印報(bào)表的問題,這些軟件在設(shè)計(jì)報(bào)表的過程中可謂各有千秋,我這里不一一細(xì)說。我在這里只向大家介紹一種我迄今為止最為滿意的一種設(shè)計(jì)打印報(bào)表的方法:利用VB操作EXCEL來生成復(fù)雜的報(bào)表。
</SPAN>
<P><SPAN class=sfont><FONT color=#ffffff>----</FONT> <B>一.
用VB創(chuàng)建外部EXCEL對(duì)象</B> </SPAN>
<P><SPAN class=sfont><FONT color=#ffffff>----</FONT> 大多數(shù)大型 ActiveX-enabled
應(yīng)用程序和其它 ActiveX
部件,在它們的對(duì)象層次中都提供了一個(gè)頂層外部可創(chuàng)建對(duì)象。該對(duì)象提供了對(duì)該層次中其它對(duì)象的訪問,并且還提供對(duì)整個(gè)應(yīng)用程序起作用的方法和屬性。
</SPAN>
<P><SPAN class=sfont><FONT color=#ffffff>----</FONT> 例如,每個(gè) Microsoft
Office 應(yīng)用程序提供一個(gè)頂層 Application 對(duì)象。下面語句顯示了對(duì)Microsoft Excel的 Application
對(duì)象的引用: </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應(yīng)用程序中的從屬對(duì)象、以及這些對(duì)象的屬性和方法。例如: </SPAN><PRE><SPAN class=sfont>
Set xlApp = CreateObject("Excel.Application")
‘激活EXCEL應(yīng)用程序
xlApp.Visible = False ‘隱藏EXCEL應(yīng)用程序窗口
Set xlBook = xlApp.Workbooks.Open(strDestination)
‘打開工作簿,strDestination為一個(gè)EXCEL報(bào)表文件
Set xlSheet = xlBook.Worksheets(1)
‘設(shè)定工作表
</SPAN></PRE>
<P><SPAN class=sfont><FONT color=#ffffff>----</FONT> <B>二. 用EXCEL
97設(shè)計(jì)報(bào)表的模版文件</B> </SPAN>
<P><SPAN class=sfont><FONT color=#ffffff>----</FONT> EXCEL
97是一個(gè)非常優(yōu)秀的創(chuàng)建報(bào)表的工具。它提供的單元格任意合并、拆分和繪圖功能基本上能夠滿足設(shè)計(jì)所有復(fù)雜報(bào)表的需求。它對(duì)任意一個(gè)單元格的格式隨意控制,更為隨心所欲地設(shè)計(jì)報(bào)表提供了強(qiáng)大的支持。
</SPAN>
<P><SPAN class=sfont><FONT color=#ffffff>----</FONT>
根據(jù)用戶提供的報(bào)表,我們可以很快在EXCEL里生成模版文件。所謂生成模版文件只是為了滿足用戶多方面的需求而設(shè)計(jì)的。也是為了適合報(bào)表以后的更改而做的一點(diǎn)預(yù)備工作。例如用戶需要打印幾百張職工履歷表,但其格式都是一致的,并且隨著時(shí)間和實(shí)際情況的變化,表格格式有可能需要改變,我們?cè)O(shè)計(jì)一個(gè)模版文件顯然可以“以不變應(yīng)萬變”了。
</SPAN>
<P><SPAN class=sfont><FONT color=#ffffff>----</FONT>
生成工作表時(shí)我們應(yīng)當(dāng)記錄下要填充內(nèi)容的單元格編號(hào)和該單元格內(nèi)要填充的數(shù)據(jù)字段。這樣形成一個(gè)表格,在寫程序時(shí)一目了然。如: </SPAN><PRE><SPAN class=sfont>
Cell(4,2) 職工姓名 Cell(6,6) 畢業(yè)學(xué)校
Cell(4,4) 職工性別 Cell(6,7) 所學(xué)專業(yè)
Cell(4,6) 職工民族 Cell(6,9) 工作時(shí)間
(表一)
</SPAN></PRE>
<P><SPAN class=sfont><FONT color=#ffffff>----</FONT>
在程序里我們當(dāng)然不要對(duì)模版文件進(jìn)行操作了,我們只需要對(duì)模版文件的一個(gè)拷貝進(jìn)行操作就行(這也是我們?cè)O(shè)計(jì)模版文件的一個(gè)目的和好處)。如下面的例子:
</SPAN><PRE><SPAN class=sfont>
Dim strSource, strDestination As String
strSource = App.Path & "\Excels\RegisterFee.xls"
‘RegisterFee.xls就是一個(gè)模版文件
strDestination = App.Path & "\Excels\Temp.xls"
FileCopy strSource, strDestination
‘將模版文件拷貝到一個(gè)臨時(shí)文件
</SPAN></PRE>
<P><SPAN class=sfont><FONT color=#ffffff>----</FONT> <B>三. 生成工作表內(nèi)容</B>
</SPAN>
<P><SPAN class=sfont><FONT color=#ffffff>----</FONT>
有了上述兩步工作的鋪墊,我們下面接著就只要根據(jù)(表一)的格式給各單元格賦值了。如: </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ào)表</B>
</SPAN>
<P><SPAN class=sfont><FONT color=#ffffff>----</FONT>
生成了工作表后,就可以對(duì)EXCEL發(fā)出打印指令了。 </SPAN>
<P><SPAN class=sfont><FONT color=#ffffff>----</FONT>
注意在執(zhí)行打印操作之前應(yīng)該對(duì)EXCEL臨時(shí)文件執(zhí)行一次保存操作,以免在退出應(yīng)用程序后EXCEL還提示用戶是否保存已修改的文件,讓用戶覺得莫名其妙。如下語句:
</SPAN><PRE><SPAN class=sfont>
xlBook.Save ‘保存文件
xlSheet.PrintOut ‘執(zhí)行打印
xlApp.Quit ‘退出EXCEL
</SPAN></PRE>
<P><SPAN class=sfont><FONT color=#ffffff>----</FONT>
至此讀者應(yīng)該看到,我們?cè)O(shè)計(jì)的報(bào)表打印是通過EXCEL程序來后臺(tái)實(shí)現(xiàn)的。用戶根本看不到具體過程,他們只看到一張張漂亮的報(bào)表輕易地被打印出來了。
</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>版權(quán)所有©1999 太平洋電腦信息網(wǎng)<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>
?? 快捷鍵說明
復(fù)制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號(hào)
Ctrl + =
減小字號(hào)
Ctrl + -