无法另存为CSV文件

我试图使用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 

我需要在列上应用筛选器,然后使用新的文件名存储筛选的文件。 我能够应用filter,但不能将输出保存到另一个CSV文件。

我不认为有可能只保存可见的细胞。 您需要将它们复制到新工作表并将其导出。 另外,如果要导出为特定格式,则应始终指定文件格式 ,否则将使用默认格式(通常为打开文件的格式)创build输出文件。

改变这个:

 $xl.selection.AutoFilter(9,$filterval) $ws.SaveAs("C:\Users\vicky\Desktop\newFile.csv") $wb.close() 

进入这个:

 $xl.selection.AutoFilter(9,$filterval) $ws2 = $wb.Sheets.Add() $ws.UsedRange.SpecialCells(12).Copy() $ws2.Paste() $ws2 .SaveAs("C:\Users\vicky\Desktop\newFile.csv" , 6 ) $wb.Saved = $true $wb.close() 

请注意:不要使用Stop-Process来终止Excel实例。 正确的方法是释放COM对象:

 $xl.Quit() [Runtime.InteropServices.Marshal]::ReleaseComObject($xl) [GC]::Collect() [GC]::WaitForPendingFinalizers()