找回密码
 加入
搜索
查看: 3152|回复: 6

[系统综合] _Excel_RangeRead 读取单元格时间格式时,如何将将读取数字转换成时间格式?

  [复制链接]
发表于 2016-7-9 11:45:14 | 显示全部楼层 |阅读模式
本帖最后由 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试试!
 楼主| 发表于 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")
 楼主| 发表于 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)
发表于 2016-7-31 11:40:54 | 显示全部楼层
读取text吧,text得到的结果是以单元格的显示内容为准的,不过遗憾的是这个方法没办法直接读取多个单元格,只能一个一个的读取
发表于 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)
发表于 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)
您需要登录后才可以回帖 登录 | 加入

本版积分规则

QQ|手机版|小黑屋|AUTOIT CN ( 鲁ICP备19019924号-1 )谷歌 百度

GMT+8, 2024-4-25 00:38 , Processed in 0.076132 second(s), 23 queries .

Powered by Discuz! X3.5 Licensed

© 2001-2024 Discuz! Team.

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