注册 登录
编程论坛 VFP论坛

如何从EXCEL文件中采集数据 ?

sarge_xp 发布于 2025-10-23 21:55, 222 次点击
只有本站会员才能查看附件,请 登录


怎样才能把EXCEL中的列L、M、N、S、T、U中的数据采集到同一DBF中 ?
5 回复
#2
吹水佬2025-10-24 10:36
本论坛vfp版块搜索“EXCEL”有一大堆类似帖参考
#3
nbwww2025-10-24 13:38
用LIBXL快的你怀疑人生
#4
wengjl2025-10-28 12:37
程序代码:


    SET ENGINEBEHAVIOR 70
    SET SAFETY OFF
    SET TALK OFF
    CREATE TABLE tabled (佣金 n(10,2),印花税 n(10,2),其他杂费 n(10,2),净佣金 n(10,2),规费 n(10,2),过户费 n(10,2))
    CLOSE DATABASES  
    SELECT 0
    USE tabled ALIAS bmk
    ZAP
    MyExcel=createobject('excel.application')  
    IF !VARTYPE(myexcel)$"Oo"   
      MESSAGEBOX("建立EXCEL文件失败,请检查OFFICE是否正常!",48,"提醒:")
      RETURN
    ENDIF
    MyExcel.visible=.T.                  
    MyExcel.DisplayAlerts = .F.      
    filemc=GETFILE()
    Mb_excel=myexcel.workbooks.open(filemc)   
    Mb_SheetName=MyExcel.application.ActiveSheet.Name
    Mb_UsedRange =Mb_excel.worksheets(Mb_SheetName).UsedRange  
    Mb_rows=Mb_UsedRange.rows.count   
    SELECT bmk
    FOR  i=2 TO mb_rows
      APPEND BLANK
      REPLACE 佣金 WITH myExcel.cells(i,12).value
      REPLACE 印花税 WITH myExcel.cells(i,13).value
      REPLACE 其他杂费 WITH myExcel.cells(i,14).value
      REPLACE 净佣金 WITH myExcel.cells(i,19).value
      REPLACE 规费 WITH myExcel.cells(i,20).value
      REPLACE 过户费 WITH myExcel.cells(i,21).value
    ENDFOR
    MyExcel.ActiveWorkbook.close   
    MyExcel.DisplayAlerts = .T.  
    MyExcel.WorkBooks.close      
    MyExcel.QUIT
    RELEASE MyExcel  
   
    QUIT  



复制粘贴成为一PRG文档,执行即可
#5
sarge_xp2025-10-29 13:14
回复 4楼 wengjl
SET DEFAULT TO C:\TEST
SET TALK OFF
SET SAFETY OFF
CLOSE DATABASES
ADIR(ABC)
? ALEN(ABC)
IF ALEN(ABC)>5
    FOR I=1 TO ALEN(ABC)/5
        IF JUSTEXT(ABC(I ,1))#"XLS" OR !(ISDIGIT(LEFT(ALLTRIM(JUSTFNAME(ABC(I ,1))),1))) &&获得文件扩展名
            ? ABC(I ,1)
            DELETE FILE  ABC(I ,1) RECYCLE
        ENDIF
    ENDFOR
ENDIF


OEXCEL = CREATEOBJECT("EXCEL.APPLICATION")
WITH OEXCEL
    .WORKBOOKS.OPEN(SYS(5) + SYS(2003) +"\"+ALLTRIM(ABC(1,1)))
    .DISPLAYALERTS = .F.
    .ACTIVEWORKBOOK.SAVEAS(SYS(5) + SYS(2003) + "\771.dbf",8)  && 保存为以制表符分隔的文本文件
    .ACTIVEWORKBOOK.CLOSE
    .DISPLAYALERTS = .T.
    .QUIT
ENDWITH


将EXCEL数据转为771.DBF后,数据都被取整了,是不是有些参数没设好 ?
#6
wengjl2025-10-29 14:11
我给你的是有小数的。

为什么要写上  DELETE FILE  ABC(I ,1) RECYCLE 这一句,这是疯狂而且危险的思维 ?
1