¿Cómo podría convertir un archivo XLS en un archivo CSV en la línea de comandos de Windows?
La máquina tiene Microsoft Office 2000 instalado. Estoy abierto a instalar OpenOffice si no es posible usar Microsoft Office.
Abra el Bloc de notas, cree un archivo llamado XlsToCsv.vbs y péguelo en:
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 comando, vaya a la carpeta en la que guardó el archivo .vbs y ejecute:
XlsToCsv.vbs [sourcexlsFile].xls [destinationcsvfile].csv
Sin embargo, esto requiere que Excel esté instalado en la máquina en la que se encuentra.
oExcel.Workbooks.Open
línea con el índice deseado de la hoja de trabajo (comienza en 1):oBook.Worksheets(1).Activate
Una versión ligeramente modificada de la respuesta de ScottF, que no requiere rutas de archivo absolutas:
He cambiado el nombre del script ExcelToCsv, ya que este script no se limita a xls en absoluto. xlsx Funciona bien, como era de esperar.
Probado con Office 2010.
fuente
Una pequeña expansión en el maravilloso script VB de ScottF: este archivo por lotes recorrerá los archivos .xlsx en un directorio y los volcará en archivos * .csv:
Nota: Puede cambiar la extensión .xlsx a .xls y el nombre del script ExcelToCSV a XlsToCsv
fuente
¿Qué tal con PowerShell?
El código debería verse así, aunque no probado
Aquí hay una publicación que explica cómo usarlo.
¿Cómo puedo usar Windows PowerShell para automatizar Microsoft Excel?
fuente
$Excel.Workbooks.Open
método. No pudo encontrar el archivo especificado. Resolví esto usandoGet-Item
en el archivo y conectándolo a unForEach-Object
bucle (algo que terminaré haciendo en mi implementación final de todos modos) para las dos líneas que comienzan con$Workbook
.CD /D C:\ && DIR YOURDOC.csv /s
. Resulta que el archivo se guardó en Mis documentos de forma predeterminada. Por lo tanto, debe incluir más en el script si desea guardar el archivo en la misma carpeta en la que está trabajando (si no es Mis documentos).Tenía la necesidad de extraer varios cvs de diferentes hojas de trabajo, por lo que aquí hay una versión modificada del código plang que le permite especificar el nombre de la hoja de trabajo.
fuente
Aquí hay una versión que manejará múltiples archivos arrastrados y soltados desde Windows. Basado en los trabajos anteriores de
Abra el Bloc de notas, cree un archivo llamado XlsToCsv.vbs y péguelo en:
fuente
¿Por qué no lo escribes tu mismo?
Veo en su perfil que tiene al menos algo de experiencia en C # / .NET. Crearía una aplicación de consola de Windows y usaría un lector de Excel gratuito para leer sus archivos de Excel. He usado Excel Data Reader disponible en CodePlex sin ningún problema (una cosa buena: este lector no requiere que Excel esté instalado). Puede llamar a su aplicación de consola desde la línea de comandos.
Si se encuentra atascado, publique aquí y estoy seguro de que obtendrá ayuda.
fuente
Puede hacerlo con Alacon, utilidad de línea de comandos para la base de datos Alasql . Funciona con Node.js, por lo que debe instalar Node.js y luego el paquete Alasql .
Para convertir un archivo de Excel a CVS (ot TSV) puede ingresar:
De forma predeterminada, Alasql convierte los datos de "Sheet1", pero puede cambiarlos con los parámetros:
Alacon admite otro tipo de conversiones (CSV, TSV, TXT, XLSX, XLS) y construcciones de lenguaje SQL (consulte el Manual del usuario para ver ejemplos).
fuente
Hay un proveedor de datos OLEDB de Excel integrado en Windows; puede usar esto para 'consultar' la hoja de Excel a través de ADO.NET y escribir los resultados en un archivo CSV. Se requiere una pequeña cantidad de codificación, pero no debería necesitar instalar nada en la máquina.
fuente
Sobre la base de lo que Jon of All Trades ha proporcionado, lo siguiente (~ n) eliminó el molesto problema de la doble extensión:
FOR /f "delims=" %%i IN ('DIR *.xlsx /b') DO ExcelToCSV.vbs "%%i" "%%~ni.csv"
fuente
Probé la solución ScottF VB y la hice funcionar. Sin embargo, quería convertir un archivo de Excel de varias pestañas (libro de trabajo) en un solo archivo .csv.
Esto no funcionó, solo se copió una pestaña (la que está resaltada cuando la abro a través de Excel).
¿Alguien conoce un script que pueda convertir un archivo de Excel de múltiples pestañas en un solo archivo .csv?
fuente
La respuesta de Scott F es la mejor que he encontrado en Internet. Agregué a su código para satisfacer mis necesidades. Yo añadí:
En caso de error, reanudar siguiente <- Para tener en cuenta los archivos xls que faltan en mi procesamiento por lotes en la parte superior. oBook.Application.Columns ("A: J"). NumberFormat = "@" <- Antes de la línea SaveAs para asegurarme de que mis datos se guarden formateados como texto para evitar que Excel elimine los ceros iniciales y las comas en cadenas de números en mis datos es decir (1200 a 1200). El rango de la columna debe ajustarse para satisfacer sus necesidades (A: J).
También eliminé el eco "hecho" para que no sea interactivo.
Luego agregué el script en un archivo por lotes de cmd para procesar datos automatizados cada hora a través de una tarea.
fuente
Todas estas respuestas me ayudaron a construir el siguiente script que convertirá automáticamente los archivos XLS * a CSV y viceversa , colocando uno o más archivos en el script (o mediante la línea de comandos). Disculpas por el formato janky.
fuente
:: ¡Para UTF-8 funciona para Microsoft Office 2016 y superior!
Prueba este código:
fuente
Cree un archivo TXT en su escritorio llamado "xls2csv.vbs" y pegue el código:
Arrastre un archivo XLS a él (como "test.xls"). Creará un archivo CSV convertido llamado "test.xls.csv". Luego, cámbiele el nombre a "test.csv". Hecho.
fuente