(Eu sei que você está em um MAC, então minha resposta pode não ser tão útil para você. Mas para usuários do Windows talvez. Btw. há uma reimplementação de código aberto Powershell para MAC e Linux lá fora chamada PASH )
Como converter facilmente vários arquivos do Excel para qualquer formato desejado
Faça o download deste roteiro Powershell e execute-o. Isso é tudo. :)
Ele pedirá uma pasta e itera através de todos os XLSX, XLS, XLSB nesta pasta e suas subpastas. Em seguida, o Powershell cria uma instância oculta do Excel para usar os comandos Excels internal Open
e Save as
para converter todos os arquivos para o formato desejado. Atualmente para arquivos TXT delimitados por tabulações desde que o OP pede. Nomes de arquivos e estruturas de pastas são preservados.
Uma coisa interessante é que até várias planilhas são salvas em um arquivo separado se você escolher, por exemplo, CSV ou TXT. Normalmente, somente a primeira planilha é salva ao usar o diálogo Salvar como do Excel
Se você precisar de outro formato, altere -4158
no código-fonte para seu valor. Abaixo estão alguns formatos comuns retirados de MSDN .
Open XML Workbook XLSX 51 xlOpenXMLWorkbook Excel 2003 XLS 56 xlExcel8 Excel12 XLSB 50 xlExcel12 Current Platform Text CSV -4158 xlCurrentPlatformText HTML format HTML 44 xlHtml Unicode Text TXT 42 xlUnicodeText DBF4 DBF 11 xlDBF4
$object = New-Object -comObject Shell.Application
$folder = $object.BrowseForFolder(0, 'Select the folder', 0)
if (!$folder) {exit}
$excel = New-Object -comObject Excel.Application
$excel.Visible = $false
$excel.DisplayAlerts = $false
foreach ($file in Get-ChildItem -literalPath $folder.self.Path*.xls? -recurse) {
$workbook = $excel.Workbooks.Open($file.Fullname)
foreach ($worksheet in $workbook.Sheets) {
$worksheet.activate()
$newpath = $File.DirectoryName +"\"+ $file.BaseName + " - " + $worksheet.name + ".csv"
$workbook.SaveAs($newpath,-4158 ,$null,$null)
}
$workbook.Close()
}
$excel.quit()
[System.Runtime.Interopservices.Marshal]::ReleaseComObject($workbook)
[System.Runtime.Interopservices.Marshal]::ReleaseComObject($excel)
[System.GC]::Collect()
[System.GC]::WaitForPendingFinalizers()
- Dependências: Excel 2003 ou superior e Powershell (pré-instalado no Windows 7)