主题:[讨论]Excel的导入问题
妙计山人
[专家分:130] 发布于 2010-05-30 23:31:00
.
Vfp6.0导入Excel文件大约在120行左右,Vfp9.0虽说不受行数的限制,但若利用“ APPEND FROM "综合概算.xls" TYPE XL5 SHEET "" ”直接导入图示的表格,则往往会提示“文件格式无效”(特别是附带有页眉、页脚的情形),本人虽说能变相处理,但总归有些麻烦,请问可有最简便的方式以便直接导入?
谢谢!
最后更新于:2010-05-30 23:31:00
回复列表 (共5个回复)
沙发
bgedexiaodi [专家分:0] 发布于 2010-05-31 17:06:00
搬个凳子等高手出现~
板凳
moke9 [专家分:30] 发布于 2010-09-02 12:04:00
2010年,中国网民突破了4亿,网络游戏玩家超过了3亿,互联网即将进入全民网游的时代,你好.摩客公司全国招代理商推广员专职或兼职项目绝对真实。详细QQ空间资料
加盟请联系QQ908889846
3 楼
qingfeng666 [专家分:0] 发布于 2010-09-20 15:48:00
IMPORT from 综合概算.xls TYPE xl5
4 楼
妙计山人 [专家分:130] 发布于 2010-09-24 22:43:00
谢谢回复,只是有时会同样存在“文件格式无效”的提示。
5 楼
妙计山人 [专家分:130] 发布于 2010-09-24 23:04:00
关于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
再次感谢提供这些相关代码的老师。
我来回复