回 帖 发 新 帖 刷新版面

主题:excel到dbf中,数据类型转换问题?

如下代码
eole=CREATEOBJECT('Excel.application') && 创建Excel对象
eole.Workbooks.Open(GETFILE("xls"))  && 要打开的工作表名
eole.visible=.f.   && 不显示Excel窗口
eole.WorkSheets(1).Activate   &&激活工作簿1
nrows=eole.Worksheets('包装清单')
UsedRange =nrows.UsedRange
lnRow = UsedRange.ROWS.COUNT    &&获取的总行数("有内容的")
SELECT 包装清单
for i=2 to lnrow &&从第2行起读到最后一行
    
    x2=alltrim(eole.Cells(i,2).value) &&取第i行第二列的值
    x3=alltrim(eole.Cells(i,3).value) &&取第i行第三列的值
    x4=alltrim(eole.Cells(i,4).value) &&取第i行第四列的值
    x5=str(eole.Cells(i,5)) &&取第i行第五列的值,需要转换数据类型
    x6=alltrim(eole.Cells(i,6).value) &&取第i行第五列的值
    x10=alltrim(eole.Cells(i,10).value) &&取第i行第五列的值
    
    
    
    
    **
    
    INSERT INTO 包装清单 (序号,图号,名称,数量,材料,工艺路线) VALUES (x2,x3,x4,x5,x6,x10) 
endfor
eole.Workbooks.close  && 关闭工作簿
eole.quit && 退出Excel

excel的类型全部为字符型,而dbf中,数量、单重、总重为数值型,请问怎么把excel中的类型在代码中转换为数值型?请赐教!

回复列表 (共3个回复)

沙发

X2=CAST(X2 AS Y)&&强行转换成货币型
X5=CAST(X5 AS N(10,2))&&强行转换成数值型,且只有两位小数

板凳


以上方法已经试验,但导入以后提示: 数量字段不能为null值,grid中怎么解决?
excel中有些行的数量是没有的

3 楼

这样解决空值:
X5=CAST(iif(isnull(X5),"",X5) AS N(10,2))

我来回复

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