Je cherche un moyen de convertir rapidement un répertoire de fichiers .csv au format .xls ou .xlsx (ce serait bien si je pouvais faire l'un ou l'autre).
Existe-t-il un moyen simple de le faire ou dois-je installer un programme tiers?
Je cherche un moyen de convertir rapidement un répertoire de fichiers .csv au format .xls ou .xlsx (ce serait bien si je pouvais faire l'un ou l'autre).
Existe-t-il un moyen simple de le faire ou dois-je installer un programme tiers?
Réponses:
En supposant que vous aimez et avez Python (pour une raison quelconque), vous pouvez utiliser ce script que j'ai concocté:
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')
Ran dans le répertoire avec tous les fichiers CSV, il les convertira tous et gifle un ".xls" à la fin.
Pour Excel 2007+ (fichiers xlsx) prenant en charge jusqu'à environ 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')
Il y a beaucoup de choses non dites dans votre question.
En supposant que vos fichiers CVS se trouvent dans une structure de répertoires similaire à
c:\randompath\CSV\
a.csv
b.csv
c.csv
:
:
z.csv
et vous voulez vous retrouver avec
c:\randompath\XLS\
a.xls
b.xls
c.xls
:
:
z.xls
Je peux penser à trois voies à suivre en fonction du rapport entre le travail initial et le travail de nettoyage que vous êtes prêt à faire.
Notez que je n'ai pas encore écrit de code pour faire ces choses. Je propose juste des idées pour un point de départ. Peut-être que si vous pouviez donner plus de détails sur ce que vous voulez, vous pourriez obtenir des explications plus détaillées sur la façon de gérer l'approche de ma part ou d'un autre membre du forum.
Pour les fenêtres? La version en ligne de commande de CoolUtils " Total CSV Converter " prend en charge de nombreux formats de sortie, y compris JSON, Access, DBF, XML et SQL et ne coûte que 40 $. Il peut récupérer les sous-répertoires, supprimer les fichiers CSV d'origine, combiner tous les fichiers en un seul document, etc.
http://www.coolutils.com/TotalCSVConverter
CSVConverter.exe <source> <destination> <options>
" Advanced CSV Converter " (40-200 $) est un EXE portable qui peut le faire rapidement et sans avoir à installer Excel.
http://www.dbf2002.com/csv-converter/commandline.html
"c:\Program Files\CSV Converter\csvcnv.exe" c:\base\*.csv c:\exports\ /TOXLSX /SRCHDR
" Convert XLS " de SoftInterface peut utiliser Excel (mais n'est pas requis) et est plus cher (500 $ +), mais prend en charge plus de formats et a plus d'options.
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 " est un tableur open source qui peut effectuer une conversion directe, mais il a été interrompu pour Windows en août 2014.
ssconvert file.csv file.xlsx
Si vous avez installé Python, " csv2odf " est une option open-source et utilise une approche basée sur des modèles pour générer des fichiers ods, odt, html, xlsx ou docx.
http://sourceforge.net/projects/csv2odf/
csv2odf data.csv template.odt output.xlsx
Avec Node 8+ et bash:
npm install -g pguardiario/csv2xlsx
for file in *.csv; do csv2xlsx "$file"; done