88 votos

Convertir XLS a CSV en línea de comandos

¿Cómo podría convertir un archivo XLS en un archivo CSV en la línea de comandos de Windows.

La máquina tiene instalado el Microsoft Office 2000. Estoy dispuesto a instalar OpenOffice si no es posible usar Microsoft Office.

103voto

ScottF Puntos 769

Abre el Bloc de Notas, crea un archivo llamado XlsToCsv.vbs y pégalo:

if WScript.Arguments.Count < 2 Then
    WScript.Echo "Error! Please specify the source path and the destination. Usage: XlsToCsv SourcePath.xls Destination.csv"
    Wscript.Quit
End If
Dim oExcel
Set oExcel = CreateObject("Excel.Application")
Dim oBook
Set oBook = oExcel.Workbooks.Open(Wscript.Arguments.Item(0))
oBook.SaveAs WScript.Arguments.Item(1), 6
oBook.Close False
oExcel.Quit
WScript.Echo "Done"

Luego, desde una línea de comandos, ve a la carpeta en la que guardaste el archivo .vbs y ejecuta:

XlsToCsv.vbs [sourcexlsFile].xls [destinationcsvfile].csv

Sin embargo, esto requiere que Excel esté instalado en la máquina en la que estás.

66voto

plang Puntos 1783

Una versión ligeramente modificada de la respuesta de ScottF, que no requiere rutas de archivo absolutas:

if WScript.Arguments.Count < 2 Then
    WScript.Echo "Please specify the source and the destination files. Usage: ExcelToCsv <xls/xlsx source file> <csv destination file>"
    Wscript.Quit
End If

csv_format = 6

Set objFSO = CreateObject("Scripting.FileSystemObject")

src_file = objFSO.GetAbsolutePathName(Wscript.Arguments.Item(0))
dest_file = objFSO.GetAbsolutePathName(WScript.Arguments.Item(1))

Dim oExcel
Set oExcel = CreateObject("Excel.Application")

Dim oBook
Set oBook = oExcel.Workbooks.Open(src_file)

oBook.SaveAs dest_file, csv_format

oBook.Close False
oExcel.Quit

He cambiado el nombre de script ExcelToCsv, ya que este script no se limita en absoluto a xls. xlsx Funciona muy bien, como era de esperar.

Probado con Office 2010.

19voto

Jon of All Trades Puntos 1925

Una pequeña expansión del genial VB de ScottF script: este archivo por lotes hará un bucle a través de los archivos .xlsx en un directorio y los volcará en archivos *.csv:

FOR /f "delims=" %%i IN ('DIR *.xlsx /b') DO ExcelToCSV.vbs "%%i" "%%i.csv"

14voto

YOU Puntos 44812

¿Qué tal con PowerShell?

El código debería ser así, pero no probado.

$xlCSV = 6
$Excel = New-Object -Com Excel.Application 
$Excel.visible = $False 
$Excel.displayalerts=$False 
$WorkBook = $Excel.Workbooks.Open("YOUDOC.XLS") 
$Workbook.SaveAs("YOURDOC.csv",$xlCSV) 
$Excel.quit()

Aquí hay un post explicando cómo usarlo

¿Cómo puedo usar Windows PowerShell para automatizar Microsoft Excel?

5voto

Jay Riggs Puntos 30783

¿Por qué no escribes tú mismo?

Veo por tu perfil que tienes al menos algo de experiencia en C#/.NET. Crearía una aplicación para la consola de Windows y usaría un lector de Excel gratuito para leer en tu(s) archivo(s) de Excel. He usado Lector de datos de Excel disponible en CodePlex sin ningún problema (una cosa buena: este lector no requiere que se instale Excel). Puede llamar a su aplicación de consola desde la línea de comandos.

Si te encuentras atrapado aquí y estoy seguro de que conseguirás ayuda.

Iteramos.com

Iteramos es una comunidad de desarrolladores que busca expandir el conocimiento de la programación mas allá del inglés.
Tenemos una gran cantidad de contenido, y también puedes hacer tus propias preguntas o resolver las de los demás.

Powered by:

X