• 
    

    
    

      99热精品在线国产_美女午夜性视频免费_国产精品国产高清国产av_av欧美777_自拍偷自拍亚洲精品老妇_亚洲熟女精品中文字幕_www日本黄色视频网_国产精品野战在线观看 ?

      利用VFP批量讀取EXCEL數(shù)據(jù)

      2014-12-31 00:00:00陶傳軍
      計算機光盤軟件與應(yīng)用 2014年10期

      摘 要:針對實際工作中遇到的問題,應(yīng)用VFP編程技術(shù),將VFP和Excel二者的優(yōu)點結(jié)合起來,首先利用VFP的ADIR()函數(shù)實現(xiàn)遍歷指定文件夾下所有XLS文件,然后通過創(chuàng)建OLE對象,應(yīng)用VFP控制Excel命令,實現(xiàn)Excel文件數(shù)據(jù)的批量提取。

      關(guān)鍵詞:VFP;讀??;Excel;數(shù)據(jù)

      中圖分類號:TP311.52

      1 問題提出

      日常工作中,經(jīng)常會遇到這樣的問題:某部門要召開下屬單位會議,會議通知中要求入會單位用Excel文件上報入會人員情況,比如:單位、姓名、性別、民族、職務(wù)、聯(lián)系電話等。入會單位上報后,會議主辦單位需要對入會人員的情況進(jìn)行匯總處理。當(dāng)入會單位只有幾家、十幾家或幾十家的時候,我們可以用手工復(fù)制、粘貼的方式來完成這項工作,但當(dāng)入會單位達(dá)到幾百家甚至更多的時候,這項工作的工作量就大到我們難以承受了。那么,有沒有更好的解決辦法來提高工作效率呢?

      2 解決思路

      Excel則是一個優(yōu)秀的電子表格處理軟件,在兼容性、操作界面、公式運算、圖表表現(xiàn)等方面有著獨到的優(yōu)勢,成為廣大辦公應(yīng)用人員常用的工具。而VFP(Visual FoxPro)是一種關(guān)系型數(shù)據(jù)庫管理系統(tǒng),其強大的數(shù)據(jù)處理能力及其面向?qū)ο蟮木幊棠芰?,使其得到?shù)據(jù)庫應(yīng)用程序開發(fā)人員的廣泛使用。VFP和Excel都可以用來進(jìn)行處理數(shù)據(jù)庫表格,我們嘗試將二者的優(yōu)點巧妙結(jié)合起來,首先利用VFP的ADIR()函數(shù)實現(xiàn)遍歷指定文件夾下所有XLS文件,然后通過創(chuàng)建OLE對象,應(yīng)用VFP控制Excel命令,實現(xiàn)XLS文件數(shù)據(jù)的批量提取。

      3 實現(xiàn)過程

      首先,建立格式統(tǒng)一的Excel文件錄入模板,要求入會單位用模板錄入內(nèi)容,用單位名稱做文件名(必須保證文件名不重復(fù))上報;然后,以Excel文件表頭指標(biāo)名稱為字段,建立數(shù)據(jù)庫;入會單位上報后,將全部文件復(fù)制到一個文件夾下,運行下列代碼,就可完成VFP批量讀取Excel數(shù)據(jù)。(相關(guān)代碼的作用在代碼行后進(jìn)行批注。)

      Excel文件錄入模板:

      表1 會議報名表

      單位姓名性別民族職務(wù)聯(lián)系電話

      4 主要代碼

      set safety off

      close databases

      clear all

      tpath=sys(5)+sys(2003)+[\] 讀取當(dāng)前路徑

      select 1

      create table 會議報名表(單位c(40),姓名c(10),性別c(2),民族c(10),職務(wù)c(10),電話c(11)) 創(chuàng)建\"會議報名表.dbf\"

      tn=adir(ts,'tpath.*.xls') 創(chuàng)建一個數(shù)組ts,遍歷當(dāng)前路徑下所有.XLS文件

      tm=1

      do whil tm<=tn

      tfile=tpath+ts(tm,1)

      eole=createobject('Excel.application') 創(chuàng)建Excel對象

      eole.workbooks.open(\"tfile.\") 調(diào)用 Excel 應(yīng)用程序;

      eole.worksheets('sheet1').activate 設(shè)置第1個工作表為激活工作表

      eole.visible=.f. 不顯示Excel窗口

      eole.displayalerts = .f.

      k=3 從第三行取值

      do whil k<13 假定Excel文件最多10行數(shù)據(jù),可根據(jù)需要設(shè)置

      if is1(eole.cells(k,1).value) 空值判斷,如值為空則不繼續(xù)讀取

      exit

      endif

      select 1

      append blank

      replace 單位 with alltrim(eole.cells(k,1).value)

      replace 姓名 with iif(is1(eole.cells(k,2).value),[],alltrim(eole.cells(k,2).value)) 進(jìn)行空值判斷,防止因空值出錯

      replace 性別 with iif(is1(eole.cells(k,3).value),[],alltrim(eole.cells(k,3).value))

      replace 民族 with iif(is1(eole.cells(k,4).value),[],alltrim(eole.cells(k,4).value))

      replace 職務(wù) with iif(is1(eole.cells(k,5).value),[],alltrim(eole.cells(k,5).value))

      replace 電話 with iif(is1(eole.cells(k,6).value),[],iif(type(\"(eole.cells(k,6).value)\")=[N],alltrim(str(eole.cells(k,6).value,11,0)),alltrim(eole.cells(k,7).value))) 進(jìn)行數(shù)值類型判斷,防止類型不符出錯

      k=k+1

      enddo

      eole.workbooks.close

      eole.quit

      tm=tm+1

      enddo

      close databases

      retu

      5 應(yīng)用效果

      以上代碼,已在VFP9.0下調(diào)試通過,并在實際工作中得到很好的應(yīng)用。上述代碼,只完成了VFP批量讀取Excel數(shù)據(jù)工作,將數(shù)據(jù)導(dǎo)入到數(shù)據(jù)庫后,可以重新轉(zhuǎn)到Excel中,也可以對數(shù)據(jù)進(jìn)一步處理或存檔,篇幅所限,這里就不繼續(xù)討論了。需要說明的是,這一解決思路,不僅可以用在會議報名表上,對一些數(shù)據(jù)結(jié)構(gòu)不復(fù)雜,數(shù)據(jù)量不是特別大的統(tǒng)計報表,也有實際應(yīng)用價值。作者對上述代碼稍加修改,在第三次經(jīng)濟(jì)普查中,成功處理了500余家單位上報的近20000家個體經(jīng)營戶核查數(shù)據(jù),大大提高了工作效率。

      參考文獻(xiàn):

      [1]袁鐸峰,楊惠燕.體質(zhì)測試數(shù)據(jù)Excel自動統(tǒng)計模板的研制[J].計算機光盤軟件與應(yīng)用,2014(05):132-133.

      [2]章立.試析VB在EXCEL中的實際應(yīng)用[J]計算機光盤軟件與應(yīng)用,2013(23):270-271.

      作者簡介:陶傳軍,男,山東工業(yè)大學(xué)應(yīng)用數(shù)學(xué)專業(yè),統(tǒng)計師。

      作者單位:山東省蓬萊市統(tǒng)計局,山東蓬萊 265600

      克拉玛依市| 兴山县| 长顺县| 彭水| 封丘县| 涡阳县| 深泽县| 凤冈县| 田阳县| 卢龙县| 泸定县| 金坛市| 新竹市| 肥西县| 克拉玛依市| 上杭县| 杭锦旗| 农安县| 贵德县| 额尔古纳市| 合山市| 辽阳市| 墨竹工卡县| 随州市| 昂仁县| 裕民县| 额敏县| 兴义市| 洛南县| 清徐县| 永州市| 花莲市| 赣榆县| 淮滨县| 桑日县| 柘城县| 台南县| 无为县| 江源县| 新民市| 东海县|