明輝手游網(wǎng)中心:是一個免費提供流行視頻軟件教程、在線學習分享的學習平臺!

DELPHI下調節(jié)器用EXCEL為其編輯與打印

[摘要]我們在常用的數(shù)據(jù)庫應用程序中,編寫報表程序比較麻煩,而且delphi中的報表程序由使用者修改也不方便,象一般的數(shù)據(jù)要加上一個表頭,其中的一些數(shù)據(jù)要修改或要把幾個表的數(shù)據(jù)組合成一個數(shù)據(jù)集后再打印,這些...
我們在常用的數(shù)據(jù)庫應用程序中,編寫報表程序比較麻煩,而且delphi中的報表程序由使用者修改也不方便,象一般的數(shù)據(jù)要加上一個表頭,其中的一些數(shù)據(jù)要修改或要把幾個表的數(shù)據(jù)組合成一個數(shù)據(jù)集后再打印,這些操作對于delphi中的報表程序來說無能為力,而在大多數(shù)的電腦上都裝有office套件,我們能不能利用EXCEL的表格處理能力和固有的多種打印輸出功能呢?答案是肯定的。我們利用EXCEL能處理DBASE文件的功能,只要我們的數(shù)據(jù)庫文件和DBASE兼容就可以了。

  在delphi中的database desktop系統(tǒng)中,新建一個Table表的dbase IV(只能用dabse文件,因為EXCEL不認其它方式的文件)文件sample.dbf,可建立索引文件,在這里應注意的是在database desktop中只能輸入英文字段,其實我們只用databse desktop建立文件結構,然后可以到vfp中修改成中文即可,對數(shù)據(jù)的初始化和字段的增減可在vfp中完成,大家可能要問為什么不在vfp中直接建立數(shù)據(jù)表文件,因為EXCEL根本不認vfp中的數(shù)據(jù)表,它讀出的數(shù)據(jù)是雜亂的。

  建立好數(shù)據(jù)表sample.dbf后,在delphi中建立一個工程,然后選擇file->new中的data module模塊,建立的data module好處是在各個表單可能通用,在datamodule1的components中添加數(shù)據(jù)源和數(shù)據(jù)表,設置相關項,數(shù)據(jù)表的databasename應設為c:\temp(你的dbf文件的目錄),把tablename設為你所設計的數(shù)據(jù)表(sample.dbf),在form1上新建一個button按鈕,caption為編輯打印,在它的onclick中加入如下代碼:

  data.table1.close;//關閉當前數(shù)據(jù)表,如果不關閉可能造成數(shù)據(jù)不全

  if fileexists(extractfiledir(application.exename)+‘\samplep.dbf') then DeleteFile(extractfiledir(application.exename)+‘\samplep.dbf');

  //判斷打印數(shù)據(jù)表samplep.dbf是否存在,如果存在就刪除它

  copyfile(pchar(extractfiledir(application.exename)+‘\sample.dbf'),pchar(extractfiledir(application.exename)+‘\samplep.dbf'),true);

  //把sample.dbf拷貝成打印數(shù)據(jù)表samplep.dbf,samplep.dbf是編輯打印專用的,如果用sample.dbf則EXCEL會提示sample.dbf是只讀文件,修改會死機

  data.table1.open;//打開當前數(shù)據(jù)表,使其處于活動狀態(tài)

  shellexecute(0,‘open',‘EXCEL.EXE',pchar(extractfiledir(application.exename)+‘\samplep.dbf'),pchar(extractfiledir(application.exename)),SW-SHOWMAXIMIZED);//調用excel并讀取samplep.dbf文件到excel中,在頭文件中要引用ShellAPI.

  這樣就可利用EXCEL的表格功能和多打印功能,不必再去設計繁鎖的報表程序了;我在為我單位編寫的發(fā)票統(tǒng)計系統(tǒng)使用了這種方式,使用者感覺到很方便。