pchome2000 发表于 2016-7-9 11:45:14

_Excel_RangeRead 读取单元格时间格式时,如何将将读取数字转换成时间格式?

本帖最后由 pchome2000 于 2016-7-9 11:52 编辑

Excel表单元格是时间格式时,_Excel_RangeRead 读取单元格时间格式时,如何将将读取数字转换成时间格式?

用stringFormat 不能转换.

单元格08:00 的时间,读取后变成0.333333333

Local $oExcel = _Excel_Open()
Local $oWorkbook = _Excel_BookOpen($oExcel, @ScriptDir & "\test.xls")
Local $aResult = _Excel_RangeRead($oWorkbook, 2, "A1:C1", 2)

msgbox(0,"aa", $aresult)

水木子 发表于 2016-7-9 13:18:33

_Excel_RangeRead($oWorkbook, Default, "A1", 3)

把2改成3试试!

pchome2000 发表于 2016-7-9 14:18:25

本帖最后由 pchome2000 于 2016-7-9 14:20 编辑

回复 2# 水木子


谢谢,如果我要a1:f10这个范围内就不可以,这个范围都读取成文本可以吗?

$oExcel = _Excel_Open(False)
                Local $oWorkbook = _Excel_BookOpen($oExcel, @ScriptDir & "\test.xlsx")
               
                With $oWorkbook.activesheet
                        $aArray = $oWorkbook.parent.application.intersect(.range(.cells(2, 14), .cells(.rows.count, 1)), .usedrange).value
                        $aArray = $oWorkbook.parent.application.transpose($aArray)
                EndWith

                _ArrayDisplay($aArray, "test")

pchome2000 发表于 2016-7-10 17:18:46

以下代码可以实现变成时间格式,还有更好办法吗?

Local $oExcel = _Excel_Open()
Local $oWorkbook = _Excel_BookOpen($oExcel, "R:\test.xlsx")


_Excel_RangeInsert($oWorkbook.Activesheet, "M:N")


Local $aResult = _Excel_RangeRead($oWorkbook, Default, $oWorkbook.ActiveSheet.Usedrange.Columns("A:A"), 1)


_Excel_RangeWrite($oWorkbook, $oWorkbook.Activesheet, '=IF(O2<>"",TEXT(O2,"HH:MM"),"")', "M2:M" & UBound($aResult), False)
_Excel_RangeWrite($oWorkbook, $oWorkbook.Activesheet, '=IF(P2<>"",TEXT(P2,"HH:MM"),"")', "N2:N" & UBound($aResult), False)

With $oWorkbook.Activesheet
        $aArray = $oWorkbook.Parent.Application.Intersect(.Range(.Cells(2, 14), .Cells(.Rows.Count, 1)), .Usedrange).Value
        $aArray = $oWorkbook.Parent.Application.Transpose($aArray)
EndWith

_ArrayDisplay($aArray)

kevinch 发表于 2016-7-31 11:40:54

读取text吧,text得到的结果是以单元格的显示内容为准的,不过遗憾的是这个方法没办法直接读取多个单元格,只能一个一个的读取

h20040606 发表于 2016-8-6 06:27:09

本帖最后由 h20040606 于 2016-8-6 07:00 编辑

回复 3# pchome2000
使用Excel的Text函数即可。
$aArray= $oExcel.text($oExcel.transpose($oWorkbook.Activesheet.range("a1:f10").value),"hh:mm:ss")
_arraydisplay($aArray)

h20040606 发表于 2016-8-6 09:10:20

回复 5# kevinch


    用 text属性,只能单个单元格。太慢。可采用Text函数
$aArray= $oExcel.text($oExcel.transpose($oWorkbook.Activesheet.range("a1:f10").value),"hh:mm:ss")
_arraydisplay($aArray)
页: [1]
查看完整版本: _Excel_RangeRead 读取单元格时间格式时,如何将将读取数字转换成时间格式?