求问一个关于EXCEL导入的问题
powershell吧
全部回复
仅看楼主
level 1
凌霄之龙 楼主
程序实现的功能很简单,就是表示出每天的开机时间,关机时间。另外,标准下班时间是下午5点半,之后算加班,所以还想显示一个加班时间。这些在console上面都是可以实现的,但是现在的问题是在导入EXCEL的时候出现了问题。加班时间这一条无法导入,出现的错误是说属性无法转换。所以请各位大神帮帮忙!!
第一次发帖…有什么不合规矩的请吧务通知我
# ********************************************************
# 环境参数设定
# ********************************************************
$startID = 2147489653
$endID = 2147489654
#取得开关机日志
$log = Get-EventLog system -InstanceId $startID,$endID `
-After ((Get-Date).AddMonths(-1))
#取得开机时间
$StartObj = $log | ?{$_.InstanceId -eq $startID} | select timewritten |
sort timewritten | group {($_.TimeWritten).day} | %{
#取得组里第一个数据(每天第一次开机时间)
$startTime = (@($_.group)[0]).TimeWritten
New-Object PsObject -Property @{日期=$startTime.ToString("yyyyMMdd")
开机=$startTime.ToString("HH:mm:ss")}
}
#取得关机时间
$EndObj = $log | ?{$_.InstanceId -eq $endID} | select timewritten |
sort timewritten | group {($_.TimeWritten).day} | %{
#取得组里最后一个数据(每天最后一次关机时间)
$endTime = (@($_.group)[-1]).TimeWritten
#本日下班时间设定
$standardOffTime=Get-Date -Date $endTime -Hour 17 -Minute 30 -Second 0
#加班时间计算
$overTime= New-TimeSpan $standardOffTime -end $endTime
New-Object PsObject -Property @{日付=$endTime.ToString("yyyyMMdd")
关机=$endTime.ToString("HH:mm:ss")
加班时间=$overTime}
}
#结合开关机的两个对象
$lists = $StartObj+$EndObj | sort 日期 | group 日期 | %{
$outObj = 1 | select 日期,开机,关机,加班时间
$outObj.日付 = $_.name
$_ | select -ExpandProperty group | %{
if($_.开机){$outObj.开机 = $_.开机}
if($_.关机){$outObj.关机 = $_.关机}
if($_.加班时间){$outObj.加班时间 = $_.加班时间}
}
$outObj
}
#打开excel文件
$xl = new-object -comobject excel.application
$xl.Visible = $true
$wb = $xl.Workbooks.Add()
$wb.worksheets.item(2).delete()
$wb.worksheets.item(2).delete()
$wb.worksheets.item(1).name=”TIMES”
#设定标题
$TIMES=$wb.worksheets.item("TIMES")
$TIMES.cells.item(1,1)="日期"
$TIMES.cells.item(1,2)="开机"
$TIMES.cells.item(1,3)="关机"
$TIMES.cells.item(1,4)="加班时间"
#导入数据
$rowCnt=2
foreach($list in $lists){
$TIMES.cells.item($rowCnt,1)=$list.日期
$TIMES.cells.item($rowCnt,2)=$list.开机
$TIMES.cells.item($rowCnt,3)=$list.关机
$TIMES.cells.item($rowCnt,4)=$list.加班时间
$rowCnt++}
2014年10月02日 04点10分 1
level 8
首先不明白你这个的意思,其次不评价你的思路,最后既然说属性无法转换,那么你在插入excel之前做一次强制类型转换,转成string,再插入就不会错了。
2014年10月03日 01点10分 2
1