无法另存为 CSV 文件
Unable to SaveAs CSV file
我正在尝试使用 PowerShell 保存 CSV 文件,但我无法这样做。我尝试了各种方法并花了很多时间,但我仍然无法弄清楚为什么我无法保存生成的文件。下面是相同的示例代码。
$file1 = "C:\Users\vicky\desktop\SourceFile.csv" # CSV Source file
$xl = new-object -c excel.application
$xl.Visible = $true
$xl.DisplayAlerts = $false
$wb=$xl.workbooks.open($file1)
$ws=$wb.worksheets.item("SourceFile") # Sheet name
$ws.activate
$rng = $ws.Cells.Item(1,6).EntireColumn
$rng.select #selecting range
$filterval = "Y"
$xl.selection.AutoFilter(9,$filterval) # Applying filter on 9th column from left of the source file
$ws.SaveAs("C:\Users\vicky\Desktop\newFile.csv") # Save filtered output as newFile
$wb.close()
$xl.quit()
$a= get-process -name EXCEL | select -expand Id # Finding Process Id of Excel
stop-process $a # To kill Excel Process
我需要对列应用过滤器,然后使用新文件名存储过滤后的文件。我可以应用过滤器,但无法将输出保存到另一个 CSV 文件。
我认为只保存可见单元格是不可能的。您需要将它们复制到新的 sheet 并导出。此外,如果要导出为特定格式,应始终指定 file format,否则将使用默认格式(通常是打开文件的格式)创建输出文件。
改变这个:
$xl.selection.AutoFilter(9,$filterval)
<b>$ws.SaveAs("C:\Users\vicky\Desktop\newFile.csv")</b>
$wb.close()
进入这个:
$xl.selection.AutoFilter(9,$filterval)
<b>$ws2 = $wb.Sheets.Add()
$ws.UsedRange.SpecialCells(12).Copy()
$ws2.Paste()
$ws2</b>.SaveAs("C:\Users\vicky\Desktop\newFile.csv"<b>, 6</b>)
<b>$wb.Saved = $true</b>
$wb.close()
附带说明:不要使用 Stop-Process
终止 Excel 实例。正确的方法是释放COM对象:
$xl.Quit()
[Runtime.InteropServices.Marshal]::ReleaseComObject($xl)
[GC]::Collect()
[GC]::WaitForPendingFinalizers()
我正在尝试使用 PowerShell 保存 CSV 文件,但我无法这样做。我尝试了各种方法并花了很多时间,但我仍然无法弄清楚为什么我无法保存生成的文件。下面是相同的示例代码。
$file1 = "C:\Users\vicky\desktop\SourceFile.csv" # CSV Source file
$xl = new-object -c excel.application
$xl.Visible = $true
$xl.DisplayAlerts = $false
$wb=$xl.workbooks.open($file1)
$ws=$wb.worksheets.item("SourceFile") # Sheet name
$ws.activate
$rng = $ws.Cells.Item(1,6).EntireColumn
$rng.select #selecting range
$filterval = "Y"
$xl.selection.AutoFilter(9,$filterval) # Applying filter on 9th column from left of the source file
$ws.SaveAs("C:\Users\vicky\Desktop\newFile.csv") # Save filtered output as newFile
$wb.close()
$xl.quit()
$a= get-process -name EXCEL | select -expand Id # Finding Process Id of Excel
stop-process $a # To kill Excel Process
我需要对列应用过滤器,然后使用新文件名存储过滤后的文件。我可以应用过滤器,但无法将输出保存到另一个 CSV 文件。
我认为只保存可见单元格是不可能的。您需要将它们复制到新的 sheet 并导出。此外,如果要导出为特定格式,应始终指定 file format,否则将使用默认格式(通常是打开文件的格式)创建输出文件。
改变这个:
$xl.selection.AutoFilter(9,$filterval)
<b>$ws.SaveAs("C:\Users\vicky\Desktop\newFile.csv")</b>
$wb.close()
进入这个:
$xl.selection.AutoFilter(9,$filterval)
<b>$ws2 = $wb.Sheets.Add()
$ws.UsedRange.SpecialCells(12).Copy()
$ws2.Paste()
$ws2</b>.SaveAs("C:\Users\vicky\Desktop\newFile.csv"<b>, 6</b>)
<b>$wb.Saved = $true</b>
$wb.close()
附带说明:不要使用 Stop-Process
终止 Excel 实例。正确的方法是释放COM对象:
$xl.Quit()
[Runtime.InteropServices.Marshal]::ReleaseComObject($xl)
[GC]::Collect()
[GC]::WaitForPendingFinalizers()