如题,通过Ado连接excel,获取excel中“顾客编号”,“顾客姓名”,“销售金额”三列值,并对“销售金额”进行汇总。其中“顾客编号”列已设置为文本类型,当“顾客编号”列中出现“0”开头的值时,得到的顾客编号为空值。请问如何解决?谢谢~
con.Open "provider=Microsoft.Jet.OLEDB.4.0;data source=" & txtPath.Text & ";Extended Properties=""Excel 8.0;hdr=yes;imex=1"""
rs.Open "select 顾客编号,顾客姓名,sum(销售金额) as 公司程序报单金额 from [sheet1$] group by 顾客编号,顾客姓名 order by 顾客编号", con, 3, 3

解决方案 »

  1.   

    复杂一点的,在 Excel 文件同一路径下放一个 Schema.ini  文件,声明各列的类型、长度等属性。在网上搜一下 Schema.ini 。
      

  2.   


    顾客编号不是固定长度的,如果不对excel做改动,只改VB的代码有办法实现吗?
      

  3.   

    看来你的顾客编号是数字,在EXCEL中,会自动判断是那种数据类型,在读取Excel时,按它的数据类型进行判断,因此,在VB中会出现错误,简单的方法是在读取是加一个判断语句:
    if Excel的顾客编号=0 then rs!顾客编号="0"         应该就可以了
      

  4.   

    试试改一下"provider=Microsoft.Jet.OLEDB.4.0;data source=" & txtPath.Text & ";Extended Properties=""Excel 8.0;HDR=Yes;IMAX=1"""如果不行,就只有加 Schema.ini 了。其中要有 MaxScanRows = 0 指定扫描所有记录。