筆者由于工作需要,在oa系統(tǒng)中,需要將excel文件的內(nèi)容導入到數(shù)據(jù)庫中,同時還需要將數(shù)據(jù)庫中的內(nèi)容導出到excel文件中。筆者的oa是用php開發(fā)的,并且應用在web頁面上,所以直接用php處理難度比較大。經(jīng)過研究,筆者用delphi開發(fā)了一個activex控件,來處理excel文件的數(shù)據(jù),然后將數(shù)據(jù)提交到服務器上,再保存到數(shù)據(jù)庫中,輕松的實現(xiàn)了excel文件數(shù)據(jù)的導入。導出沒有用activex控件,直接用php處理。方法是將數(shù)據(jù)直接生成csv文件,因為csv是逗號分隔的文本文件,并且可以直接用excel打開處理,所以可以滿足要求。 下面將實現(xiàn)的方法介紹一下。導入的頁面代碼: "人員編號", "fieldname"=>"stuffid", "fieldtype"=>"a"), array ("caption"=>"開始日期", "fieldname"=>"begindate", "fieldtype"=>"a"), array ("caption"=>"結(jié)束日期", "fieldname"=>"enddate", "fieldtype"=>"a"), array ("caption"=>"合同內(nèi)容", "fieldname"=>"contracttext", "fieldtype"=>"a"), array ("caption"=>"備注", "fieldname"=>"thismemo", "fieldtype"=>"a"), array ("caption"=>"服務器文件名", "fieldname"=>"docfile", "fieldtype"=>"a"), array ("caption"=>"文件類型", "fieldname"=>"filetype", "fieldtype"=>"a"), array ("caption"=>"本地文件名", "fieldname"=>"filename", "fieldtype"=>"a"), array ("caption"=>"文件擴展名", "fieldname"=>"extname", "fieldtype"=>"a")); //構(gòu)造sql語句,字段名部分 $strsql = "insert into hr_workcontract ("; $strtemp = ""; for ($i = 0; $i execsql ($strsql.$strtmp)) $do->setobject ("err", "數(shù)據(jù)導入失敗!"); else $do->setobject ("err", "數(shù)據(jù)導入成功!"); //echo $strsql.$strtmp; $strtmp = ""; } } } if (trim ($strtmp) != "") { $strtmp = substr ($strtmp, 0, strlen ($strtmp) - 2).";"; if (!$do->execsql ($strsql.$strtmp)) $do->setobject ("err", "數(shù)據(jù)導入失敗!"); else $do->setobject ("err", "數(shù)據(jù)導入成功!");//echo $strsql.$strtmp; } }?>勞動合同信息導入 導入數(shù)據(jù)的頁面如下: 可以顯示導入excel文件的所有內(nèi)容,并且可以手工選擇要導入的數(shù)據(jù),可以對數(shù)據(jù)進行臨時的修改處理(修改過后數(shù)據(jù)以紅顏色顯示,以示區(qū)別)。 選擇文件界面。可以選擇本地硬盤上的excel文件,包括xls文件和csv兩種格式。