999精品在线视频,手机成人午夜在线视频,久久不卡国产精品无码,中日无码在线观看,成人av手机在线观看,日韩精品亚洲一区中文字幕,亚洲av无码人妻,四虎国产在线观看 ?

一種高效的Excel表導入數據庫的實現方法

2008-12-31 00:00:00吳滿意
電腦知識與技術 2008年16期

摘要:本文是在開發數據庫管理系統的實踐中,為解決把大量以Excel表形式保存的學生歷史考試成績自動錄入數據庫的問題,提出了一種利用PowerBuilder特有的數據窗口、OLE技術以及對文件進行操作的函數等把Excel表導入SQL Server數據庫的一種高效率的實現方法,并在所研發的系統中運行成功。

關鍵詞:Excel表;PowerBuilder;數據庫;數據窗口

中圖分類號:TP311文獻標識碼:A文章編號:1009-3044(2008)16-21179-03

A High-efficiency Method for Switching Excel-data Into Database

KANG Ya,SHAO Kang,WU Man-yi

(Institute of Economy and Management, Anhui University of Science Technology,Huainan 232001,China)

Abstract: In order to switch massive data saved as excel table into database automatically, proposed one kind of high-efficiency method for switching data saved as excel table into database by using the PowerBuilder’s unique data window, the OLE technology as well as function on the operation to the document, and it was run successfully in practice.

Key words: excel table; PowerBuilder; database; data-window

1 引言

在開發數據庫管理系統時經常會遇到對大量歷史數據進行錄入的問題,如果手動錄入一條一條的記錄既費時費力又容易出錯,因此客戶經常要求把一些大量的歷史數據能夠自動錄入到數據庫中去。在為安徽淮南實驗中學開發教務管理系統的過程中就遇到類似的問題,校方要求能夠把大量以Excel表形式保存的學生歷史考試成績自動錄入數據庫,這個問題必須很好的解決,否則開發出來的系統不可能令校方滿意。目前解決類似問題的常用方法是將Excel格式數據文件轉存為文本文件[1],再設法導入數據庫中。文獻[1]中詳細闡述了用這種方法把Excel數據導入Oracle數據庫中。但是這種方法使用起來不太方便,如果在實際應用中讓使用方增加一步這種操作,肯定是不合適的。還有些方法可以實現把Excel表數據直接導入數據庫,但是要按記錄逐條導入,也比較麻煩。因此,本文提出了一種把Excel表直接導入數據庫的實現方法。

2 理論分析

2.1 數據窗口

數據窗口是PowerBuilder的一大特色,數據窗口對象是數據窗口的一個組成部分,也是PowerBuilder的一大特色,它為我們操作數據庫中的數據提供了一種直觀有效的手段,利用它可以方便地進行連接數據庫,以自己喜歡的方式顯示數據庫中的數據以及修改數據庫[2]。PowerBuilder為數據窗口對象提供了11種顯示風格,每種風格只是定義了數據窗口的基本顯示樣式,在此基礎上可以進一步對數據窗口對象以及它所包含的其它對象的屬性進行設置,從而構造出千邊萬化的數據顯示界面[3]。

2.2 GetFileOpenNam()函數

功能:顯示打開文件對話框,讓用戶選擇要打開的文件。

語法:GetFileOpenName(title,pathname,filename{,extension{,filter}})。

示例:下面的代碼顯示“打開文件”對話框,之后打開用戶選擇的文件,對話框中顯示TXT和DOC類型文件:

string docname , named

integer value

value=GetFileOpenName(“打開文件”,docname,named,”DOC”,”本文件(*.TXT),*.TXT”

+”DOC文件(*.DOC),*.DOC”)

if value=1 then FileOpen(docname)[4]

2.3 ImportFile()函數

數據窗口的ImportFile函數可以將滿足某種格式的外部數據讀入到數據窗口中,該函數語法如下:

ImportFile(filename{,startrow {,endrow {,startcolumn {,endcolumn ,{dwstartcolumn}}}}})。

2.4 OLE技術

PowerBuilder 支持OLE(Object Linking and Embedding) , 即對象鏈接與嵌入。OLE 是一種為Windows 設計的交互進程通信機制, 實際上是一種編程接口。OLE 自動化技術使得用戶不僅能操縱駐留在自己應用程序里的對象, 而且能操縱駐留在系統上的其他程序中的對象。要實現OLE 技術, 首先要用OLE 對象OLEObject 聲明一個OLEObject 實例,然后創建該對象的實例,創建方法如下:

OLEObject oleobjectname

Oleobjectname = create OLEObject[5]。

在對安徽淮南實驗中學保存的學生成績表進行仔細研究后發現,這些表格都保存在電腦指定的硬盤上,且都有相同的表結構,根據這一特點考慮利用PowerBuilder中與Excel表樣式比較像的grid風格的數據窗口,利用OLE技術結合GetFileOpenName()、ImportFile()等函數來實現把Excel表導入SQL Server 2000數據庫中。

3 具體實現方法

在開發安徽淮南實驗中學教務管理系統中具體實現把Excel表導入SQL Server數據庫中的方法如下:

3.1 字段設計

創建grid風格數據窗口對象d_sjdr(如圖1),數據源為數據庫中已經創建好的xscjb表,選取的字段與Excel表的一致,變量類型也要一致(如圖2)。

■ ■

圖1grid風格數據窗口對象d_sjdr圖2Excel表

3.2 代碼設計

創建窗口w_sjdr,并添加一個數據窗口控件dw_1,dataobject為d_sjdr,兩個命令按鈕控件cb_1、cb_2,在Excel表導入按鈕中寫如下代碼:

String pathname,filename

Int openname_return

openname_return=GetFileOpenName(\"打開文件\",pathname, filename, \"TXT\", \"文本文件 (*.TXT),*.TXT,\" + \"Excel文件 (*.XLS),*.XLS\")

IF openname_return=1 THEN

IF Upper(Right(filename,3))=\"TXT\" THEN

dw_1.ImportFile(pathname)

ELSE

OLEObject ExcelServer

Long excelok

String str_savename

ExcelServer = CREATE OLEObject

ExcelOK = ExcelServer.ConnectToNewObject( \"excel.application\" )

IF excelok < 0 THEN

messagebox(\"連接excel失敗,檢查你的系統是否安裝了office\",string(excelok))

ELSE

ExcelServer.Workbooks.Open(pathname)

str_savename=\"c:\emp.txt\"

ExcelServer.activeworkbook.saveas(str_savename,3)

ExcelServer.displayalerts=False

ExcelServer.quit()

ExcelServer.DisconnectObject()

DESTROY ExcelServer

dw_1.ImportFile(str_savename)

filedelete(str_savename)

END IF

END IF

END IF

在保存按鈕中寫入如下代碼:

string ls_nj,ls_bj,ls_xm

decimal ls_yw,ls_sx,ls_yy,ls_zz,ls_ls,ls_dl,ls_sw,ls_wl,ls_hx

string ls_kc,ls_rxnf

long ll_check

long ll_rowcount,i,j

ll_rowcount=dw_1.rowcount()

if ll_rowcount<1 then

messagebox(\"系統提示\",\"沒有要執行的記錄!\")

return

end if

for i=1 to ll_rowcount

ls_nj=dw_1.object.nj[i]

ls_bj=dw_1.object.bj[i]

ls_xm=dw_1.object.xm[i]

ls_yw=dw_1.object.yw[i]

ls_sx=dw_1.object.sx[i]

ls_yy=dw_1.object.yy[i]

ls_zz=dw_1.object.zz[i]

ls_ls=dw_1.object.ls[i]

ls_dl=dw_1.object.dl[i]

ls_sw=dw_1.object.sw[i]

ls_wl=dw_1.object.wl[i]

ls_hx=dw_1.object.hx[i]

ls_kc=dw_1.object.kc[i]

ls_rxnf=dw_1.object.rxnf[i]

insert into xscjb

(nj,bj,xm,yw,sx,yy,zz,ls,dl,sw,wl,hx,kc,rxnf)

values(:ls_nj,:ls_bj,:ls_xm,:ls_yw,:ls_sx,:ls_yy,:ls_zz,:ls_ls,:ls_dl,:ls_sw,:ls_wl,:ls_hx,:ls_kc,

:ls_rxnf);

commit;

next

messagebox(\"系統提示\",\"成績錄入成功!\")

4 運行結果

在系統主界面菜單中點數據導入子菜單,在彈出的窗口中點Excel表導入按鈕,彈出打開文件對話框,找到要打開的Excel表所在的路徑,在文件類型中選擇Excel文件(*.XLS),選中存放學生成績的Excel表格文件,點打開就可以把成績讀人到當前數據窗口中(如圖3),與原始數據進行對比,發現完全一致,再點保存按鈕即可把數據錄入到數據庫中。

在程序運行時如果創建數據窗口對象選取的字段與Excel表的不一致,或者系統沒有安裝office軟件,都會出現運行錯誤,這兩點一定要注意,否則不能實現預期的功能。

圖3 運行結果

5 結束語

本文提出了一種利用PowerBuilder特有的數據窗口、OLE技術以及對文件進行操作的函數等把Excel表導入SQL Server 2000數據庫的實現方法,該方法已成功應用于安徽淮南實驗中學教務管理系統研發中,系統的運行環境是Windows XP 。實踐證明該方法在程序設計上比較簡單易行,而且效率非常高,它可以把大量的數據一次性導入,比按記錄行一條一條導入的方法效率高的多,可以很好的解決目前客戶對系統歷史數據錄入的需求問題,具有很強的實用性,可供開發數據庫管理系統時借鑒。

參考文獻:

[1] 馬櫟.如何將Excel、Access、FoxPox數據導入Oracle數據庫[J].電腦開發與應用,2005(11):64.

[2] 呂曉輝. PowerBuilder9.0全方位教程[M].北京:航空工業出版社,2003:196.

[3] 陳永強,等.PowerBuilder數據庫開發經典實例精解[M].北京機械工業出版社,2007:161.

[4] 鄭啟迪,等.PowerBuilder9.0經典范例50講[M].北京:兵器工業出版社、北京希望電子出版社,2005:28-29.

[5] 潘峰,等.PowerBuilder中通過OLE實現復雜Excel報表[J].電腦知識與技術,2006(8):158.

注:本文中所涉及到的圖表、注解、公式等內容請以PDF格式閱讀原文。

主站蜘蛛池模板: 欧美一区国产| 毛片在线播放a| 色综合综合网| 综合色婷婷| 2021国产精品自产拍在线观看| 美女无遮挡免费网站| 四虎综合网| 国产福利拍拍拍| 国产日韩丝袜一二三区| 亚洲欧洲国产成人综合不卡 | 日本在线免费网站| 中国国产高清免费AV片| 无码精品国产dvd在线观看9久 | 精品国产成人国产在线| 2021最新国产精品网站| 亚洲精选高清无码| 欧美专区在线观看| 欧美日本激情| 久久伊人色| 日韩欧美中文字幕在线精品| 8090成人午夜精品| 精品一区二区三区四区五区| 日韩毛片视频| 人妻精品全国免费视频| 成年人福利视频| 免费看a毛片| 一本一本大道香蕉久在线播放| 国产福利不卡视频| 色噜噜久久| 亚洲日韩第九十九页| 欧美成人手机在线视频| 动漫精品啪啪一区二区三区| 91福利免费视频| 91亚洲精品国产自在现线| 欧美在线黄| 国产精品三级专区| 欧美中文字幕无线码视频| 蜜芽国产尤物av尤物在线看| 无码精品一区二区久久久| 亚洲国产日韩在线成人蜜芽| 国产xxxxx免费视频| 欧美午夜久久| 国产精品成人一区二区不卡| 中文字幕丝袜一区二区| 久久96热在精品国产高清| 免费毛片视频| 亚洲成人动漫在线观看| 91色在线观看| 波多野结衣视频网站| 精品视频在线观看你懂的一区| 亚洲无码精品在线播放| 精品久久人人爽人人玩人人妻| 视频一区亚洲| 欧洲成人免费视频| 婷婷丁香色| 精品丝袜美腿国产一区| 五月天久久综合| 久久伊人色| 欧美区一区| 拍国产真实乱人偷精品| 亚洲综合色区在线播放2019| 日韩精品一区二区三区中文无码| 欧美亚洲另类在线观看| 国产在线观看91精品亚瑟| 波多野结衣一二三| 99久久精品国产麻豆婷婷| 亚洲综合经典在线一区二区| 中文字幕第4页| 色婷婷狠狠干| 中文字幕亚洲专区第19页| 天堂岛国av无码免费无禁网站| 国产在线一二三区| 一区二区三区在线不卡免费| 黄色网址免费在线| 国产av一码二码三码无码| 日本久久久久久免费网络| 日韩欧美国产精品| 曰韩人妻一区二区三区| 欧美一道本| 欧美精品高清| 香蕉蕉亚亚洲aav综合| 免费看久久精品99|