2017-06-05 55 views
1

如何将Excel文件(xlsx)批量转换为csv?我试过从xlsx创建csv(s)

$source = 'C:\path\to\file' 

Get-ChildItem $source '*.xlsx' | Rename-Item -NewName { $_.Name -replace '\.xlsx','.csv' } 

但是csvs是不可读的。理想情况下,我希望能够从每张纸上制作一张csv(所以我不必在转换之前手动将它们分开)。

谢谢。

+0

你不能只重命名文件,并期望改变文件的内容。您需要一个能够理解XLSX的程序或模块,然后才能根据内容生成CSV。这对于Stack Overflow问题来说太广泛了。 – mason

+0

@mason我看着你说什么,我做了一些研究..我发现/得到了一个工作函数下面。 – physlexic

回答

1

这是我发现了什么/有:

$source = 'C:\path\to\file' 

Function ExcelCSV ($File) 
{ 
    $Excel = New-Object -ComObject Excel.Application 
    $Excel.Visible = $false 
    $Excel.DisplayAlerts = $false 
    $wb = $Excel.Workbooks.Open($File.FullName) 
    foreach ($ws in $wb.Worksheets) 
     { 
     $ws.SaveAs(($Files.FullName -replace ".xlsx$","") + ".csv", 6) 
     } 
     $wb = $Excel.Workbooks.Close() 
     $Excel.Quit() 
} 

Foreach ($Files in (Get-ChildItem -Path $source -Filter "*.xlsx")) 
{ 
    ExcelCSV($Files) 
}