kavensyw 发表于 2010-9-3 22:14:55

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:54

导入到DataTable是正常的,可以验证成功

sterson 发表于 2010-9-4 10:45:05

楼主既然用CCur(无法转换成功,
那么就转换成clng()看看

jino007 发表于 2010-9-4 11:05:52

刚刚试了。
clng() 返回的是0
关注!

sterson 发表于 2010-9-4 11:50:17

呵,那你可以多试几个转换的函数,总有一个适合的
如cdbl 转换为双精度
csng转换为单精度
cstr转换字符

kavensyw 发表于 2010-9-4 13:02:14

获取的时候默认是string类型吧?string好转换为数值型的吗,cdbl等试了,总是类型不对
是不是cdbl、ccur等必须是数值类型才能转换?

[ 本帖最后由 kavensyw 于 2010-9-4 13:03 编辑 ]

stone_wu 发表于 2010-9-4 15:12:34

我从DataTable中取0.0016的值时,就是取到的0.0016,你的怎么取到的是.0016呢,费解

kavensyw 发表于 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

sterson 发表于 2010-9-5 10:23:02

再看看excel单元格属性,把它设置为“文本”的

kavensyw 发表于 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

小甘 发表于 2010-9-6 09:40:07

Cstr("单元格的值")

你试一下这个呢,把2个都转换成字符来比较吧!
页: [1]
查看完整版本: Excel里获取到得0.0016为何是.0016