【发布时间】:2015-01-11 02:14:10
【问题描述】:
我正在尝试使用 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 文件。
【问题讨论】:
-
您是否收到错误消息?它会创建一个文件吗?它似乎对我有用,除了 Excel 想要恢复文件的内容,因为没有指定格式。是这个问题吗?
-
不,我没有收到任何错误。它过滤数据并暂时显示所需的显示输出,但随后不会将其保存到 newFile.csv 并且 newFile.csv 的内容与 Sourcefile.csv 的内容相同。
-
如果我注释代码的最后四行,即#$wb.close() #$xl.quit() #$a= get-process -name EXCEL |,我可以看到所需的输出。 select -expand Id #stop-process $a 但是当这些行重新生效时,过滤的结果就会丢失:(
标签: excel powershell csv