51Testing软件测试论坛

 找回密码
 (注-册)加入51Testing

QQ登录

只需一步,快速开始

微信登录,快人一步

手机号码,快捷登录

查看: 2592|回复: 10
打印 上一主题 下一主题

[原创] Excel里获取到得0.0016为何是.0016

[复制链接]
  • TA的每日心情
    开心
    2015-10-19 13:26
  • 签到天数: 2 天

    连续签到: 2 天

    [LV.1]测试小兵

    跳转到指定楼层
    1#
    发表于 2010-9-3 22:14:55 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
    'excel中存的格式是0.0016,读取时是.0016,这样我和ActualValue比较就会不一致了
    '如何把ExpectValue转换成小数格式比较,我用CCur(expression)转换总说类型不对

    'expectValue是从打开Excel中取值
    'ActualValue是从我的测试对象中取值

    ExpectValue = appSheet.cells(i,j).value
    ActualValue = TableObj.GetCellData(i-2,j-1)

    本帖子中包含更多资源

    您需要 登录 才可以下载或查看,没有帐号?(注-册)加入51Testing

    x
    分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
    收藏收藏
    回复

    使用道具 举报

  • TA的每日心情
    开心
    2015-10-19 13:26
  • 签到天数: 2 天

    连续签到: 2 天

    [LV.1]测试小兵

    2#
     楼主| 发表于 2010-9-3 22:59:54 | 只看该作者
    导入到DataTable是正常的,可以验证成功
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    开心
    2018-4-22 12:50
  • 签到天数: 393 天

    连续签到: 1 天

    [LV.9]测试副司令

    3#
    发表于 2010-9-4 10:45:05 | 只看该作者
    楼主既然用CCur(无法转换成功,
    那么就转换成clng()看看
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    4#
    发表于 2010-9-4 11:05:52 | 只看该作者
    刚刚试了。
    clng() 返回的是0
    关注!
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    开心
    2018-4-22 12:50
  • 签到天数: 393 天

    连续签到: 1 天

    [LV.9]测试副司令

    5#
    发表于 2010-9-4 11:50:17 | 只看该作者
    呵,那你可以多试几个转换的函数,总有一个适合的
    如cdbl 转换为双精度
    csng转换为单精度
    cstr转换字符
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    开心
    2015-10-19 13:26
  • 签到天数: 2 天

    连续签到: 2 天

    [LV.1]测试小兵

    6#
     楼主| 发表于 2010-9-4 13:02:14 | 只看该作者
    获取的时候默认是string类型吧?string好转换为数值型的吗,cdbl等试了,总是类型不对
    是不是cdbl、ccur等必须是数值类型才能转换?

    [ 本帖最后由 kavensyw 于 2010-9-4 13:03 编辑 ]
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    7#
    发表于 2010-9-4 15:12:34 | 只看该作者
    我从DataTable中取0.0016的值时,就是取到的0.0016,你的怎么取到的是.0016呢,费解
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    开心
    2015-10-19 13:26
  • 签到天数: 2 天

    连续签到: 2 天

    [LV.1]测试小兵

    8#
     楼主| 发表于 2010-9-5 09:52:05 | 只看该作者
    用DataTable导入是0.0016;
    用Excel对象打开读取是.0016,大致方法如下:

    Set app = CreateObject("Excel.Application")
    Set appBook = app.Workbooks.Open("H:\SKU.xls")
    Set appSheet = appBook.Worksheets(4)

    For i=3 To 102
            For j=1 To 8
                    ExpectValue = appSheet.cells(i,j).value
                    ActualValue = TableObj.GetCellData(i-3,j-1)
                    If Trim(ActualValue)<>Trim(ExpectValue) Then
                            reporter.ReportEvent micFail,"SKU排名报告不正确","ExpectValue--"&ExpectValue&vbCrLf&"ActualValue--"&ActualValue
                    End If
            Next       
    Next

    appBook.Close
    Set appBook = Nothing
    Set app = Nothing
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    开心
    2018-4-22 12:50
  • 签到天数: 393 天

    连续签到: 1 天

    [LV.9]测试副司令

    9#
    发表于 2010-9-5 10:23:02 | 只看该作者
    再看看excel单元格属性,把它设置为“文本”的
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    开心
    2015-10-19 13:26
  • 签到天数: 2 天

    连续签到: 2 天

    [LV.1]测试小兵

    10#
     楼主| 发表于 2010-9-5 12:32:09 | 只看该作者
    我感觉和vbs设置无关,应该和vbs的方法有关,可能cells读出来的值就会这样.
    不过这可以判断一下,然后加个前导的0。
    就是感觉怪怪的,不知道有没有什么方法可以直接正确的读


    Set app = CreateObject("Excel.Application")
    Set appBook = app.Workbooks.Open("G:\sku.xls")
    Set appSheet = appBook.Worksheets(1)
             ExpectValue = appSheet.range("A2").value

             msgbox ExpectValue                '不输出小数点前的0
             If expectvalue<1.0 and expectvalue>0.0 Then
                     msgbox "0"&ExpectValue        '输出小数点前的0
             End If
    appBook.Close
    Set appBook = Nothing
    Set app = Nothing
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    11#
    发表于 2010-9-6 09:40:07 | 只看该作者
    Cstr("单元格的值")

    你试一下这个呢,把2个都转换成字符来比较吧!
    回复 支持 反对

    使用道具 举报

    本版积分规则

    关闭

    站长推荐上一条 /1 下一条

    小黑屋|手机版|Archiver|51Testing软件测试网 ( 沪ICP备05003035号 关于我们

    GMT+8, 2024-9-25 02:24 , Processed in 0.083296 second(s), 28 queries .

    Powered by Discuz! X3.2

    © 2001-2024 Comsenz Inc.

    快速回复 返回顶部 返回列表