51Testing软件测试论坛

标题: Excel里获取到得0.0016为何是.0016 [打印本页]

作者: kavensyw    时间: 2010-9-3 22:14
标题: Excel里获取到得0.0016为何是.0016
'excel中存的格式是0.0016,读取时是.0016,这样我和ActualValue比较就会不一致了
'如何把ExpectValue转换成小数格式比较,我用CCur(expression)转换总说类型不对

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

ExpectValue = appSheet.cells(i,j).value
ActualValue = TableObj.GetCellData(i-2,j-1)
作者: kavensyw    时间: 2010-9-3 22:59
导入到DataTable是正常的,可以验证成功
作者: sterson    时间: 2010-9-4 10:45
楼主既然用CCur(无法转换成功,
那么就转换成clng()看看
作者: jino007    时间: 2010-9-4 11:05
刚刚试了。
clng() 返回的是0
关注!
作者: sterson    时间: 2010-9-4 11:50
呵,那你可以多试几个转换的函数,总有一个适合的
如cdbl 转换为双精度
csng转换为单精度
cstr转换字符
作者: kavensyw    时间: 2010-9-4 13:02
获取的时候默认是string类型吧?string好转换为数值型的吗,cdbl等试了,总是类型不对
是不是cdbl、ccur等必须是数值类型才能转换?

[ 本帖最后由 kavensyw 于 2010-9-4 13:03 编辑 ]
作者: stone_wu    时间: 2010-9-4 15:12
我从DataTable中取0.0016的值时,就是取到的0.0016,你的怎么取到的是.0016呢,费解
作者: kavensyw    时间: 2010-9-5 09:52
用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
作者: sterson    时间: 2010-9-5 10:23
再看看excel单元格属性,把它设置为“文本”的
作者: kavensyw    时间: 2010-9-5 12:32
我感觉和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
作者: 小甘    时间: 2010-9-6 09:40
Cstr("单元格的值")

你试一下这个呢,把2个都转换成字符来比较吧!




欢迎光临 51Testing软件测试论坛 (http://bbs.51testing.com/) Powered by Discuz! X3.2