csv 如何在html表格中添加列?

dfty9e19  于 2022-12-06  发布在  其他
关注(0)|答案(1)|浏览(143)

我有一个excel文件(csv),用来计算产品许可证的日期。用html创建表格。需要添加列来计算许可证的日期。但是我不能这样做。我的ecxcell文件是这样的; x1c 0d1x。需要'product','bitis'和'license days(在foreach循环中计算)。但是没有这样做。我需要一个包含product,bitis和$license的表。如何在表中添加$license?

$cInCsv = Import-Csv -Path $sInFile -Delimiter ";" -Encoding UTF7
$StartDate = Get-Date -UFormat "%d.%m.%Y"
$sDateFormat = "%d.%m.%Y"
$sInFile = "C:\Users\akilic\Desktop\tarihlerr.csv"

$header = @"
<style>
table {border-width: 1px; border-style: solid; border-color: black; border-collapse: collapse;}
th {border-width: 1px; padding: 3px; border-style: solid; border-color: black; background-color: #6495ED;}
td {border-width: 1px; padding: 3px; border-style: solid; border-color: black;}

</style>
"@

#Import-Csv -Path $sInFile -Delimiter ";" -Encoding UTF7 | Select product,bitis,gün | ConvertTo-Html -Head $header | Out-File "C:/Users/akilic/Desktop/health.html" 

Foreach ($ThisUser in $cInCsv)
{    

    $EndDate = Get-Date ($ThisUser.'bitis')
    $day = NEW-TIMESPAN –Start $StartDate  –End $EndDate
    $licence = $day.Days
    
    if( $licence -lt 90 -and $licence -gt 0){
       
      $ThisUser | Select-Object product,bitis, @{Name='gun'; Expression={$licence}} | Export-Csv "C:\Users\akilic\Desktop\test.csv" -Append -Force
    
    }

    if($licence -lt 0){

        $pos = [Math]::Abs($licence) 
        Write-Host $ThisUser.product " lisansı $pos gün geçmiştir"
        $ThisUser | Select-Object product,bitis,@{Name='gun'; Expression={$pos}} | Export-Csv "C:\Users\akilic\Desktop\test.csv"  -Append -Force
        
    }
}
yuvru6vn

yuvru6vn1#

您需要使用日期时间对象,而不是格式化字串。
按如下方式设置$StartDate

$StartDate = Get-Date  # a DateTime object, not a string

然后,在循环中从'bitis'列计算$EndDate,如下所示:

$EndDate = [datetime]::ParseExact($ThisUser.bitis, 'dd.MM.yyyy', $null)

现在您可以使用DateTime对象$StartDate和$EndDate建立TimeSpan。
顺便说一句,我会收集一个变量中的数据,然后将其全部保存到CSV中,这样你就不会在文件中追加这么多的磁盘写入。

$result = foreach ($ThisUser in $cInCsv) {    
    $EndDate = [datetime]::ParseExact($ThisUser.bitis, 'dd.MM.yyyy', $null)
    $licence = (New-TimeSpan –Start $StartDate  –End $EndDate).Days

    if($licence -lt 90 -and $licence -gt 0) {
        # output the selected object to be collected in variable $result
        $ThisUser | Select-Object product,bitis, @{Name='gun'; Expression={$licence}}
    }
    elseif ($licence -lt 0){
        $pos = [Math]::Abs($licence) 
        Write-Host "$($ThisUser.product) lisansı $pos gün geçmiştir"
        $ThisUser | Select-Object product,bitis,@{Name='gun'; Expression={$pos}}
    }
}

# now write the result to csv file
$result | Export-Csv "C:\Users\akilic\Desktop\test.csv" -NoTypeInformation -Force

和/或根据$result中的数据创建HTML表
哦,是的,您需要交换这些行以从CSV文件中读取

$sInFile = "C:\Users\akilic\Desktop\tarihlerr.csv"
$cInCsv  = Import-Csv -Path $sInFile -Delimiter ";" -Encoding UTF7

相关问题