回 帖 发 新 帖 刷新版面

主题:[原创]用程序把XLS文档转换成DBF文档,已经解决日期问题。附源码。

***本人ndnd9999<丹米酒>参照本论坛高手们的贴做了个XLS转DBF的程序,大家共同学习。***
***未做优化,碰到数值型出问题,不过我用的只是字符型和日期型,没改好,望高手别拍砖。***

eole=CREATEOBJECT('Excel.application')   && 创建Excel对象
eole.Workbooks.Open(GETFILE("xls"))      && 要打开的工作表名
eole.visible=.f.                         && 不显示Excel窗口
eole.WorkSheets(1).Activate              &&激活工作簿1
nrows=eole.Worksheets('cxqdtj')          &&我的工作簿名称是cxqdtj,正常的是Sheet1
UsedRange =nrows.UsedRange
lnRow = UsedRange.ROWS.COUNT             &&获取的总行数("有内容的")
SELECT 业务发展清单
for i=3 to lnrow                         &&从第3行起读到最后一行,我的XLS文件从第3行起才是有效数据
    x1=alltrim(eole.Cells(i,1).value)    &&取第i行第1列的值
x1=CAST(iif(isnull(x1),"",x1) AS C(20))  &&空值填补
    x2=alltrim(eole.Cells(i,2).value)    &&取第i行第2列的值
x2=CAST(iif(isnull(x2),"",x2) AS C(25))  &&空值填补
    x3=alltrim(eole.Cells(i,3).value)    &&取第i行第3列的值
x3=CAST(iif(isnull(x3),"",x3) AS C(70))
    x4=alltrim(eole.Cells(i,4).value)    &&取第i行第4列的值
x4=CAST(iif(isnull(x4),"",x4) AS C(16))
    x5=alltrim(eole.Cells(i,5).value)    &&取第i行第5列的值
x5=CAST(iif(isnull(x5),"",x5) AS C(25))
    x6=alltrim(eole.Cells(i,6).value)    &&取第i行第6列的值
x6=CAST(iif(isnull(x6),"",x6) AS C(25))
*    x7=dtoc(eole.Cells(i,7).value)      &&取第i行第7列的值 10/18/09
* x7=CAST(iif(isnull(x7),"",x7) AS c(10))
    x7=dtos(eole.Cells(i,7).value)       &&取第i行第7列的值并把日期型数据变为字符型 20091018
x7=CAST(iif(isnull(x7),"",x7) AS c(10))  
    x8=dtos(eole.Cells(i,8).value)       &&取第i行第8列的值并把日期型数据变为字符型
x8=CAST(iif(isnull(x8),"",x8) AS C(10))
    x9=alltrim(eole.Cells(i,9).value)    &&取第i行第9列的值
x9=CAST(iif(isnull(x9),"",x9) AS C(20))
    x10=alltrim(eole.Cells(i,10).value)  &&取第i行第10列的值
x10=CAST(iif(isnull(x10),"",x10) AS C(40))
    x11=alltrim(eole.Cells(i,11).value)  &&取第i行第11列的值
x11=CAST(iif(isnull(x11),"",x11) AS C(80))
    x12=alltrim(eole.Cells(i,12).value)  &&取第i行第12列的值
x12=CAST(iif(isnull(x12),"",x12) AS C(20))
    x13=alltrim(eole.Cells(i,13).value)  &&取第i行第13列的值
x13=CAST(iif(isnull(x13),"",x13) AS C(40))
    x14=dtos(eole.Cells(i,14).value)     &&取第i行第14列的值并把日期型数据变为字符型
x14=CAST(iif(isnull(x14),"",x14) AS C(10))
    x15=alltrim(eole.Cells(i,15).value)  &&取第i行第15列的值
x15=CAST(iif(isnull(x15),"",x15) AS C(10))

    INSERT INTO 业务发展清单 (订单编号,受理编号,客户名称,产品号码,产品类型,服务提供,受理时间,竣工时间,营业员,营业厅,促销内容,促销人,促销部门,促销时间,撤单标志) VALUES (x1,x2,x3,x4,x5,x6,x7,x8,x9,x10,x11,x12,x13,x14,x15) 
endfor
eole.Workbooks.close                      && 关闭工作簿
eole.quit                                 && 退出Excel

回复列表 (共4个回复)

沙发

没人回贴,只好自己回一个。

板凳

使用 COPY TO 自定义文件名及路径 TYPE XLS 不就可以了么??
对于前两行无效的数据,你可以手动或者用程序操作该文件,把前面的两行给删除掉。

3 楼


做的很好,收下了。谢谢!!!

4 楼

有一个问题楼主没有想到:excel文件中有空白行怎么办?必要的判断语句不能少啊!


我来回复

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