Estoy buscando una manera de convertir rápidamente un directorio de archivos .csv al formato .xls o .xlsx (sería bueno si pudiera hacer cualquiera de los dos).
¿Hay una manera fácil de hacer esto o necesito instalar un programa de terceros?
Estoy buscando una manera de convertir rápidamente un directorio de archivos .csv al formato .xls o .xlsx (sería bueno si pudiera hacer cualquiera de los dos).
¿Hay una manera fácil de hacer esto o necesito instalar un programa de terceros?
Respuestas:
Asumiendo que te gusta y tienes Python (por alguna razón), puedes usar este script que preparé:
import os
import glob
import csv
import xlwt # from http://www.python-excel.org/
for csvfile in glob.glob(os.path.join('.', '*.csv')):
wb = xlwt.Workbook()
ws = wb.add_sheet('data')
with open(csvfile, 'rb') as f:
reader = csv.reader(f)
for r, row in enumerate(reader):
for c, val in enumerate(row):
ws.write(r, c, val)
wb.save(csvfile + '.xls')
Se ejecutó en el directorio con todos los archivos CSV, los convertirá a todos y colocará un ".xls" al final.
Para Excel 2007+ (archivos xlsx) que admiten hasta aproximadamente 1 Mrows:
import os
import glob
import csv
import openpyxl # from https://pythonhosted.org/openpyxl/ or PyPI (e.g. via pip)
for csvfile in glob.glob(os.path.join('.', '*.csv')):
wb = openpyxl.Workbook()
ws = wb.active
with open(csvfile, 'rb') as f:
reader = csv.reader(f)
for r, row in enumerate(reader, start=1):
for c, val in enumerate(row, start=1):
ws.cell(row=r, column=c).value = val
wb.save(csvfile + '.xlsx')
Queda mucho por decir en tu pregunta.
Asumiendo que sus archivos CVS están en una estructura de directorio similar a
c:\randompath\CSV\
a.csv
b.csv
c.csv
:
:
z.csv
y quieres terminar con
c:\randompath\XLS\
a.xls
b.xls
c.xls
:
:
z.xls
Puedo pensar en tres rutas a seguir dependiendo de la relación entre el trabajo inicial y el trabajo de limpieza que esté dispuesto a hacer.
Tenga en cuenta que todavía no he escrito ningún código para hacer estas cosas (todavía) solo estoy ofreciendo ideas para un punto de partida. Quizás si pudiera dar más detalles sobre lo que desea, podría obtener explicaciones más detalladas sobre cómo manejar el enfoque de mí u otro miembro del foro.
¿Para ventanas? La versión de línea de comandos CoolUtils " Total CSV Converter " admite muchos formatos de salida, incluidos JSON, Access, DBF, XML y SQL, y solo cuesta $ 40. Puede recurrir subdirectorios, eliminar archivos CSV originales, combinar todos los archivos en un documento y más.
http://www.coolutils.com/TotalCSVConverter
CSVConverter.exe <source> <destination> <options>
" Advanced CSV Converter " ($ 40-200) es un EXE portátil que puede hacerlo rápidamente y sin tener que instalar Excel.
http://www.dbf2002.com/csv-converter/commandline.html
"c:\Program Files\CSV Converter\csvcnv.exe" c:\base\*.csv c:\exports\ /TOXLSX /SRCHDR
SoftInterface " Convert XLS " puede usar Excel (pero no es obligatorio) y es más costoso ($ 500 +), pero admite más formatos y tiene más opciones.
http://www.softinterface.com/Convert-XLS/Convert-XLS.htm
"c:\Program Files (x86)\Softinterface, Inc\Convert XLS\ConvertXLS.exe" /V /S"c:\base\*.csv" /T"c:\exports\*.xlsx" /F6 /C51 /M2
" Gnumeric " es un programa de hoja de cálculo de código abierto que puede realizar una conversión directa, pero se suspendió para Windows en agosto de 2014.
ssconvert file.csv file.xlsx
Si tiene instalado Python, " csv2odf " es una opción de código abierto y utiliza un enfoque con plantilla para generar archivos ods, odt, html, xlsx o docx.
http://sourceforge.net/projects/csv2odf/
csv2odf data.csv template.odt output.xlsx
Con Nodo 8+ y bash:
npm install -g pguardiario/csv2xlsx
for file in *.csv; do csv2xlsx "$file"; done