回 帖 发 新 帖 刷新版面

主题:[讨论]Excel的导入问题

.
    Vfp6.0导入Excel文件大约在120行左右,Vfp9.0虽说不受行数的限制,但若利用“ APPEND FROM "综合概算.xls" TYPE XL5 SHEET "" ”直接导入图示的表格,则往往会提示“文件格式无效”(特别是附带有页眉、页脚的情形),本人虽说能变相处理,但总归有些麻烦,请问可有最简便的方式以便直接导入?
    谢谢!

回复列表 (共5个回复)

沙发

搬个凳子等高手出现~

板凳

2010年,中国网民突破了4亿,网络游戏玩家超过了3亿,互联网即将进入全民网游的时代,你好.摩客公司全国招代理商推广员专职或兼职项目绝对真实。详细QQ空间资料
加盟请联系QQ908889846

3 楼

IMPORT from 综合概算.xls TYPE xl5

4 楼

谢谢回复,只是有时会同样存在“文件格式无效”的提示。

5 楼

关于Excel文件的导入问题,本论坛介绍了不少,以下是笔者借鉴了有关帖子并根据自己的需要稍稍作了修改。

XlApp=CreateObject("Excel.Application")
XLApp.Visible=.F.
XlApp.WorkBooks.Open(Exfl)

nR=XlApp.SHEETS(1).Range("A65536").End(-4162).Row
For I=1 to nIC
    for J=1 to nR
        Cc=XlApp.Cells(J,I).Value
        If Isnull(Cc) Or Isblank(Cc) Or Empty(Cc)
            XlApp.Cells(J,I).Value='#'
        Endif
    Endfor
ENDFOR
nIC=6

XlApp.ActiveSheet.UsedRange.Copy
Cstr=_CLIPTEXT

For I=1 to 255
    Cstr=Strtran(Cstr,[ ],[⊕])
    Cstr=Strtran(Cstr,[  ],[],2)
ENDFOR

Cstr=Strtran(Cstr,[    ],[ ])
Cstr=Strtran(Cstr,[   ],[ ])
Cstr=Strtran(Cstr,[ ],[→])
Cstr=Strtran(Cstr,[→→],[→])
Cstr=Strtran(Cstr,[,],[,])
Cstr=Strtran(Cstr,[→],[,])
Cstr=Strtran(Cstr,[,]+chr(13),chr(13))

Txtnm="lsx-d.txt"
Strtofile(Cstr,Txtnm)

SELECT Lsb1
APPEND FROM lsx-d.txt DELIMITED
REPLACE Bm WITH "" FOR ALLTRIM(Bm)=="#"
REPLACE Zb WITH "" FOR ALLTRIM(Zb)=="#"
REPLACE Jh WITH "" FOR ALLTRIM(Jh)=="#"
REPLACE Mc WITH "" FOR ALLTRIM(Mc)=="#"
REPLACE Dw WITH "" FOR ALLTRIM(Dw)=="#"
IF Drwj=1 OR Drwj=3
    REPLACE Gcsl WITH "" FOR ALLTRIM(Gcsl)=="#"
    REPLACE Dj WITH "" FOR ALLTRIM(Dj)=="#"
ELSE
    REPLACE Rg WITH "" FOR ALLTRIM(Rg)=="#"
    REPLACE Cl WITH "" FOR ALLTRIM(Cl)=="#"
    REPLACE Jx WITH "" FOR ALLTRIM(Jx)=="#"
    REPLACE Tl WITH "" FOR ALLTRIM(Tl)=="#"
    REPLACE Cs WITH "" FOR ALLTRIM(Cs)=="#"
    REPLACE Jj WITH "" FOR ALLTRIM(Jj)=="#"
    REPLACE Sj WITH "" FOR ALLTRIM(Sj)=="#"
    REPLACE Zh WITH "" FOR ALLTRIM(Zh)=="#"
ENDIF

SELECT * FROM Lsb1 INTO ARRAY Arrd
SELECT Lsb1
GO Top
For I=1 to RECCOUNT()
    Cstr=Arrd(I,4)
    Cstr1=Arrd(I,5)
    IF Drwj=2
        Cstr=Arrd(I,3)
        Cstr1=Arrd(I,4)
    Endif
    IF Drwj=3
        Cstr=Arrd(I,5)
        Cstr1=Arrd(I,6)
        Cstr2=Arrd(I,1)
    Endif
    REPLACE Mc WITH Strtran(Cstr,[⊕],[ ]), Dw  WITH Strtran(Cstr1,[⊕],[ ])
    IF Drwj=3
        REPLACE Mc1 WITH Strtran(Cstr2,[⊕],[ ])
    Endif
    SKIP
    Loop
NEXT

_CLIPTEXT=''
XlApp.ActiveWorkbook.Saved=.T.
XlApp.Quit
Delete File (Txtnm)
Drwj=1

再次感谢提供这些相关代码的老师。

我来回复

您尚未登录,请登录后再回复。点此登录或注册