web-dev-qa-db-fra.com

Comment convertir un fichier Excel avec plusieurs feuilles en un ensemble de fichiers CSV?

J'ai un fichier Excel avec 20 feuilles dessus. Existe-t-il un moyen de convertir rapidement le fichier en 20 fichiers CSV - un pour chaque feuille?

Bien sûr, je peux le faire manuellement, mais je devrai traiter beaucoup de fichiers. Ce serait donc formidable de disposer d'un utilitaire de ligne de commande (ou même de commutateurs de ligne de commande Excel).

23
AngryHacker

La méthode de vembutech est une solution nettement plus raffinée. Voici une macro VBA légère qui exporterait toutes les feuilles d'un classeur.

Va dans le dossier des classeurs actifs tous les noms sont workbookname_sheetname.csv

Sub exportcsv()
Dim ws As Worksheet
Dim path As String

path = ActiveWorkbook.path & "\" & Left(ActiveWorkbook.Name, InStr(ActiveWorkbook.Name, ".") - 1)
For Each ws In Worksheets
    ws.Activate
    ActiveWorkbook.SaveAs Filename:=path & "_" & ws.Name & ".csv", FileFormat:=xlCSV, CreateBackup:=False
Next
End Sub

MODIFIER:

Pour le commentaire. La macro d'origine utilise simplement la fonction de sauvegarde en tant que (ce qui revient à fermer l'original). Si vous souhaitez effectuer cette opération tout en laissant l'original ouvert, vous devez copier dans un nouveau classeur, enregistrer et fermer le nouveau.

Sub exportcsv()
Dim ws As Worksheet
Dim path As String

path = ActiveWorkbook.path & "\" & Left(ActiveWorkbook.Name, InStr(ActiveWorkbook.Name, ".") - 1)
For Each ws In Worksheets
    ws.Copy
    ActiveWorkbook.SaveAs Filename:=path & "_" & ws.Name & ".csv", FileFormat:=xlCSV, CreateBackup:=False
    ActiveWorkbook.Close False
Next
End Sub
17
gtwebb

Au lieu du script batch, vous pouvez utiliser le convertisseur de XLS à CSV , ce qui vous donnerait une meilleure interface utilisateur.

Lien direct: http://cwestblog.com/wp-content/uploads/2013/04/XLS-to-CSV-Converter-1.1.0.Zip

Décompressez le fichier .HTA.

Double-cliquez sur le fichier .HTA.

enter image description here

Localisez le dossier où vous avez votre fichier xls

sélectionnez le schéma de nommage csv et cliquez sur démarrer la conversion pour convertir tous les fichiers xls du dossier en fichiers csv

Si votre dossier contient 3 fichiers xls avec 3 feuilles, il créera 9 fichiers CSV pour chaque feuille et vous pourrez identifier le fichier CSV avec un schéma de nommage CSV.

J'espère que cela t'aides!

8
vembutech

Voici un script python getsheets.py ( miroir ), vous devriez Installez pandas et xlrd avant de l’utiliser.

Lance ça:

pip3 install pandas xlrd  # or `pip install pandas xlrd`

Comment ça fonctionne?

$ python3 getsheets.py -h
Usage: getsheets.py [OPTIONS] INPUTFILE

Convert a Excel file with multiple sheets to several file with one sheet.

Examples:

    getsheets filename

    getsheets filename -f csv

Options:
-f, --format [xlsx|csv]  Default xlsx.
-h, --help               Show this message and exit.

Convertir en plusieurs xlsx:

$ python3 getsheets.py goods_temp.xlsx
Sheet.xlsx Done!
Sheet1.xlsx Done!

All Done!

Convertir en plusieurs CSV:

$ python3 getsheets.py goods_temp.xlsx -f csv
Sheet.csv Done!
Sheet1.csv Done!

All Done!
4
Scott Ming

Une macro de ExtendOffice pour enregistrer les onglets dans votre dossier Documents:

Sub ExportSheetsToCSV()
    Dim xWs As Worksheet
    Dim xcsvFile As String
    For Each xWs In Application.ActiveWorkbook.Worksheets
        xWs.Copy
        xcsvFile = CurDir & "\" & xWs.Name & ".csv"
        Application.ActiveWorkbook.SaveAs Filename: = xcsvFile, _
        FileFormat: = xlCSV, CreateBackup: = False
        Application.ActiveWorkbook.Saved = True
        Application.ActiveWorkbook.Close
    Next
End Sub
3
Michel de Ruiter