_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) _Excel_RangeRead($oWorkbook, Default, "A1", 3)
把2改成3试试! 本帖最后由 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") 以下代码可以实现变成时间格式,还有更好办法吗?
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) 读取text吧,text得到的结果是以单元格的显示内容为准的,不过遗憾的是这个方法没办法直接读取多个单元格,只能一个一个的读取 本帖最后由 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) 回复 5# kevinch
用 text属性,只能单个单元格。太慢。可采用Text函数
$aArray= $oExcel.text($oExcel.transpose($oWorkbook.Activesheet.range("a1:f10").value),"hh:mm:ss")
_arraydisplay($aArray)
页:
[1]