我还没有找到实现这一目标的方法,也没有找到一个关闭的网站。我可能只是不知道如何询问这个操作,所以我会在这里试试。
我所拥有的是一张CSV,其中包含每天工作时间(常规和OT)的员工列表,所有这些都在不同的行中。列有标题。员工姓名,日期,常规时间和OT时间在单独的列中。 挑战在于员工鲍勃,一天可能有20行。鲍勃整天将一小部分时间用于不同的项目。当然,有多天和多个员工。 我最终想要的是一份报告,每天为每位员工显示所有常规和加班时间(单独)。
我从这开始,它解析SV并给我一些感兴趣的列。但是,这只输出了每一行匹配的长列表,这不会让我到达我需要去的地方。
$employees = import-csv "c:\Test1.csv"
ForEach ($employee in $employees){
$employeeName = $($employee.'Resource name')
$WorkDate = $($employee.'Charge Date')
$RegHours = $($employee.RegHours)
$OT = $($employee.OTHours)
Write-host $employeeName $WorkDate $RegHours
}
然后我尝试格式化输出以尝试开始合并输出。因为在我看来,我需要2次合并。一个用于将所有用户数据放在一起,与其他用户分开,一个用于将每个用户下的所有相同日期放在一起。然后,可以针对每个用户在每天执行SUM。至少这就是我现在正在查看它的方式。
所以这是格式化尝试。但这只是给每一行提供标题。它没有巩固。标题很好,但是需要在标题下合并用户数据才能使用它。
$employees = import-csv "C:\test2.csv"
ForEach ($employee in $employees)
{
$employeeName = $($employee.'Resource name')
$WorkDate = $($employee.'Charge Date')
$RegHours = $($employee.RegHours)
$OT = $($employee.OTHours)
$obj = $null
$obj = New-Object System.Object
$obj | Add-Member -type NoteProperty -Name "Employee Name" -Value $employeeName
$obj | Add-Member -type NoteProperty -Name "Work Date" -Value $WorkDate
$obj | Add-Member -type NoteProperty -Name "Regular Hours" -Value $RegHours
$obj | Format-table
}