【发布时间】:2022-07-06 03:54:28
【问题描述】:
所以我有一个这样的 excel 文件
单据编号、数量、价格
1111-01,1,3.00
1112-00A,2,4.00
我正在做的是将它逐行导入到 powershell 中。 如果数量大于 1,我必须多次复制该行,每次将数量更改为 1 并更新文档编号,使其在每一行上都是唯一的。然后我添加到一个数组中,这样我就可以在最后导出为一个 excel 文件。
$report = Import-Excel "pathToFile.xlsx"
$report2 = @()
foreach($line in $report){
$report2+=$line.PSObject.Copy()
}
$template = @()
foreach($line in $report2)
...
some irrelevant code
...
if($line.Qty -gt 1){
$line2 = $line.PSObject.Copy()
$ogInvoice = $line2.'Document Number'.Split("-")[0]
$invoiceAfter = $line2.'Document Number'.Split("-")[1]
if($invoiceAfter -match "^*[A-Z]$"){
$letter = $invoiceAfter.Substring($invoiceAfter.Length-1,1)
}else{
$letter = ""
}
$qty = $line2.Qty
$line2.Qty = 1
$counterQty = 0
while($counterQty -lt $qty){
$invoiceLastTwoNumber = [int]('{0:d2}' -f[int] $invoiceAfter.Substring(0,2)) + $counter
$line2.'Document Number' = (-join($ogInvoice,"-",$invoiceLastTwoNumber.ToString(),$letter))
$counter = $counter + 1
$template+=$line2
$counterQty = $counterQty + 1
}
}
问题是检查进度后,我第一次添加行时,文档编号应该是1112-50A,然后我下次将行添加到$template中,文档编号是1112- 51A 但它更新了先前添加的行。 所以我得到了
1111-01,1,3.00
1112-51A,1,4.00
1112-51A,1,4.00
而不是我想要的是:
1111-01,1,3.00
1112-50A,1,4.00
1112-51A,1,4.00
注意:像 PSObject.Copy 这样的额外编码是我在网上找到的其他东西,因为显然迭代 $report 更像是一个指针。
【问题讨论】:
标签: excel powershell export-to-excel