【问题标题】:Unable to SaveAs CSV file无法另存为 CSV 文件
【发布时间】: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


【解决方案1】:

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

改变这个:

$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()

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2014-03-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-05-21
    • 2012-03-23
    相关资源
    最近更新 更多