web-dev-qa-db-fra.com

Comment convertir par lots .csv en .xls / xlsx

Je cherche un moyen de convertir rapidement un répertoire de fichiers .csv au format .xls ou .xlsx (ce serait bien si je pouvais le faire/ou).

Existe-t-il un moyen simple de faire cela ou dois-je installer un programme tiers?

11
mindless.panda

En supposant que vous aimez et avez Python (pour une raison quelconque), vous pouvez utiliser ce script que j'ai préparé:

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 va les convertir tous et slap un ".xls" sur la fin.

Pour Excel 2007+ (fichiers xlsx) prenant en charge 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')
21
Nick T

Here est un script Perl qui le fait soi-disant, mais il semble que beaucoup de travail soit fait pour faire quelque chose qui est déjà intégré dans Excel.

1
Kirk

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 itinéraires à suivre en fonction du ratio travail initial/travail de nettoyage que vous êtes prêt à effectuer.

  1. Pas de précodage: utilisez l'Explorateur Windows pour accéder aux fichiers CSV. Utilisez la méthode qui vous convient le mieux pour sélectionner les fichiers à convertir (lasso, ctrl + a, ctrl + clic, décalage + clic), puis cliquez avec le bouton droit de la souris sur l'un des fichiers sélectionnés et cliquez sur Ouvrir. Cela ouvrira tous les fichiers dans Excel. Ensuite, pour chaque fichier, vous pouvez sélectionner "Fichier" et "Enregistrer sous" et enfin choisir le nouveau format de fichier dans lequel vous le souhaitez.
  2. Un fichier de commandes simple: Ce fichier de commandes peut utiliser des caractères génériques et/ou une structure de boucle pour ouvrir chacun des fichiers CSV et vous pouvez ensuite les traiter manuellement comme auparavant.
  3. Créer un programme VBA dans une feuille de calcul Excel: VBA pourrait ouvrir automatiquement chaque fichier CSV, puis l’enregistrer au format Excel. Vous pouvez même ajouter une simple boîte de message offrant un choix de xls ou xlsx lors de l'ouverture de chaque fichier.

Notez que je n'ai pas encore écrit de code pour faire ces choses, je ne fais que proposer 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 moi-même ou d'un autre membre du forum.

1
TedNewk

Pour les fenêtres? CoolUtils " Total CSV Converter " version en ligne de commande prend en charge de nombreux formats de sortie , notamment JSON, Access, DBF, XML et SQL. et n’est que de 40 $. Il peut ré-numériser des sous-répertoires, supprimer des 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 fichier 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 obligatoire) et est plus cher (plus de 500 $), mais prend en charge davantage de formats et dispose de 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 programme de feuille de calcul open source pouvant effectuer une conversion directe, mais il a été arrêté pour Windows en août 2014.

http://www.gnumeric.org/

ssconvert file.csv file.xlsx

Si vous avez installé Python, " csv2odf " est une option open source et utilise une approche basée sur un modèle pour générer ods, odt, html, xlsx ou docx. des dossiers.

http://sourceforge.net/projects/csv2odf/

csv2odf data.csv template.odt output.xlsx
0
user326177