主题:[原创]用程序把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
***未做优化,碰到数值型出问题,不过我用的只是字符型和日期型,没改好,望高手别拍砖。***
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