在EXCEL 中不同人錄入時會有不同的習慣,如空值時會打空格,日期時會錄入 2019.5、20190506、2019.05.06 、2019.5.6、2019-5-6,或是2019年5月6日,還有就是顯示2019年5月,實際上是2019-5-1,有的還有日期時間型等等等。
我一般是都轉換成文本格式,設定日期為 年月日格式,長型,用 4 位數字表示年,先用VARTYPE()得到值的型別。日期格式的,用dtoc()轉換取10位的,"2019-01-01",數值格式也按需要取小數位,轉成文本,其他的一般空值(NULL)和文本值,直接去掉前后空格匯入;
SET DATE YMD LONG
SET CENTURY ON
alltrim(dtoc(excel_value,1))
alltrim(str(excel_value,100,2)) &&根據情況取小數位
另:VARTYPE( ) 函式與 TYPE( ) 函式類似, 但 VARTYPE( ) 執行更快,并且不需要用引號 ("") 將指定運算式括起。
Excel 檔案內容如下
序號 EXCEL值型別 值
1 日期時間型 2019/1/1 11:01
2 日期型 2019年1月1日, 星期二
3 數值型 20190101.00
4 貨幣型 ¥20,190,101.00
5 常規 20190101
程式代碼如下:
SET DATE YMD LONG
SET CENTURY ON
SET TALK OFF
CLOSE DATABASES all
CREATE TABLE ll FREE (B001 C(100) null,B002 C(100) null) &&創建資料表
SELECT ll
M_File=GETFILE('xls,xlsx','請選擇EXCEL檔案')
IF M_File==""
=MESSAGEBOX("請選擇待匯入 ECCEL 檔案!",0+48,"提示")
RETURN
ELSE
IF JUSTEXT(M_FILE)#"XLS" AND JUSTEXT(M_FILE)#"XLSX" &&獲得檔案擴展名
=MESSAGEBOX("您選擇的不是EXCEL檔案!",0+48,"提示")
RETURN
ENDIF
ENDIF
My_excel=createobject('excel.application') &&創建一個物件
My_excel.Workbooks.open(M_File) &&打開指定檔案
i=1
FOR EACH oMyVar IN My_Excel.sheets &&當前作業簿中 各作業表的名稱
M_sheet="M_sheet"+ALLTRIM(STR(I))
i=i+1
&M_sheet=oMyVar.name
NEXT oMyVar
My_excel.Worksheets(M_sheet1).Activate &&激活第一表
UsedRange =My_excel.worksheets(M_sheet1).UsedRange &&回傳作業表中可使用的區域,UsedRange表的屬性
o_rows=UsedRange.rows.count &&匯總行
o_cols=UsedRange.columns.count &&匯總列
i=2
J=3
DO while .t.
excel_value=https://bbs.csdn.net/topics/my_excel.cells(i,j).value
DO CASE
CASE vartype(excel_value)="T" &&日期時間型
C_value =ALLTRIM(DTOC(excel_value,1))
CASE vartype(excel_value)="D" &&日期型
C_value =alltrim(dtoc(excel_value,1))
CASE vartype(excel_value)="N" &&數值型
C_value =alltrim(str(excel_value,100,2)) &&根據情況取小數位
CASE vartype(excel_value)="Y" &&貨幣型
C_value =alltrim(str(excel_value,100,2)) &&根據情況取小數位
OTHERWISE &&其他
C_value = alltrim(excel_value) &&其他 取原值去掉前后空格
ENDCASE
SELECT ll
APPEND BLANK
REPLACE B001 WITH C_value,B002 WITH ALLTRIM(my_excel.cells(i,2).value)
i=i+1
IF i>=o_rows
EXIT
ENDIF
ENDDO
SELECT ll
BROWSE LAST
My_excel.Application.Visible=.T. && 置EXCEL可見
My_excel.WORKBOOKS.CLOSE &&關閉作業簿
My_excel.QUIT &&退出Excel
CLOSE all
RETURN
uj5u.com熱心網友回復:
暫時沒有用到,學習一下。uj5u.com熱心網友回復:
可以測驗下,學習了,感謝轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/36853.html
標籤:VFP
上一篇:百萬級高并發mongodb集群性能數十倍提升優化實踐(上篇)
下一篇:SQLyog
