So konvertieren Sie .csv stapelweise in .xls / xlsx


11

Ich suche nach einer Möglichkeit, ein Verzeichnis von CSV-Dateien schnell in das XLS- oder XLSX-Format zu konvertieren (wäre schön, wenn ich entweder / oder tun könnte).

Gibt es eine einfache Möglichkeit, dies zu tun, oder muss ich ein Programm eines Drittanbieters installieren?


1
Ich bin mir nicht sicher, warum Sie dies tun müssten. CSV ist gut in Excel geöffnet. Jeder, der interagieren muss, kann einfach ohne Probleme öffnen.
Jody

2
Sie haben Recht Excel öffnet csv und xls / xlsx ganz gut. Andere Programme tun dies jedoch nicht. =)
mindless.panda

1
In welchem ​​Programm möchten Sie dies verwenden?
Kirk

Antworten:


21

Angenommen, Sie mögen und haben Python (aus irgendeinem Grund), könnten Sie dieses Skript verwenden, das ich erstellt habe:

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')

Wird im Verzeichnis mit allen CSV-Dateien ausgeführt, werden alle konvertiert und eine ".xls" auf das Ende geklatscht.

Für Excel 2007+ (xlsx-Dateien), die bis zu 1 Mrows unterstützen:

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')

2
Auf einem Macintosh habe ich die obige xlsx-Version verwendet. Ich musste "rb" in "rU" ändern, um den Fehler "Universal-Newline-Modus" von Python zu umgehen. Wenn Sie "start = 1" für "Zeilen in Aufzählung" und "Wert in Aufzählung" verwenden, wird eine leere Zeile darüber und eine leere Spalte links von den tatsächlichen Daten erstellt. Ich habe beide in "start = 0" geändert, wodurch die Daten in Zelle A1 (oben links) der Tabelle (Excel 2011) gestartet wurden. Ich habe auch die letzte Zeile in "wb.save (os.path.splitext (csvfile) [0] + '.xlsx')" geändert, um den CSV-Teil der Datei (z. B. nnnn.csv.xlsx in nnnn) zu entfernen. xlsx).
Michael S Taylor

1

Hier ist ein Perl-Skript, das es angeblich macht, aber es scheint eine Menge Arbeit zu sein, etwas zu tun, das bereits in Excel integriert ist.


1

In Ihrer Frage bleibt viel Ungesagtes.

Angenommen, Ihre CVS-Dateien befinden sich in einer ähnlichen Verzeichnisstruktur wie

c:\randompath\CSV\
    a.csv
    b.csv
    c.csv
      :
      :
    z.csv

und du willst mit enden

c:\randompath\XLS\
    a.xls
    b.xls
    c.xls
      :
      :
    z.xls

Ich kann mir drei Wege vorstellen, die je nach dem Verhältnis von Vorarbeiten zu Aufräumarbeiten, zu denen Sie bereit sind, zu gehen sind.

  1. Keine Vorcodierung: Verwenden Sie den Windows Explorer, um zu den CSV-Dateien zu navigieren. Verwenden Sie die am besten geeignete Methode, um die zu konvertierenden Dateien auszuwählen (Lasso, Strg + A, Strg + Klick, Umschalt + Klick). Klicken Sie dann mit der rechten Maustaste auf eine der ausgewählten Dateien und klicken Sie auf Öffnen. Dadurch werden alle Dateien in Excel geöffnet. Dann können Sie für jede Datei "Datei" und "Speichern unter" auswählen und schließlich das neue Dateiformat auswählen, in dem sie gespeichert werden soll.
  2. Eine einfache Batchdatei: Diese Batchdatei kann Platzhalter und / oder eine für jede Schleifenstruktur verwenden, um jede der CSV-Dateien für Sie zu öffnen, und Sie können sie dann wie zuvor manuell verarbeiten.
  3. Erstellen eines VBA-Programms in einer Excel-Tabelle: VBA kann jede CSV-Datei automatisch öffnen und dann in einem Excel-Format speichern. Sie können sogar ein einfaches Meldungsfeld hinzufügen, in dem Sie beim Öffnen jeder Datei zwischen xls und xlsx wählen können.

Beachten Sie, dass ich (noch) keinen Code geschrieben habe, um diese Dinge zu tun. Ich biete nur Ideen für einen Ausgangspunkt an. Wenn Sie mehr Details zu dem, was Sie möchten, angeben könnten, könnten Sie von mir oder einem anderen Forummitglied detailliertere Erklärungen zum Umgang mit der Vorgehensweise erhalten.


0

Für Windows? Die Befehlszeilenversion " Total CSV Converter " von CoolUtils unterstützt viele Ausgabeformate, einschließlich JSON, Access, DBF, XML und SQL, und kostet nur 40 US-Dollar. Es kann Unterverzeichnisse wiederverwenden, ursprüngliche CSV-Dateien löschen, alle Dateien zu einem Dokument kombinieren und vieles mehr.

http://www.coolutils.com/TotalCSVConverter

CSVConverter.exe <source> <destination> <options>

" Advanced CSV Converter " (40-200 US-Dollar) ist eine tragbare EXE-Datei, die dies schnell und ohne Installation von Excel erledigt.

http://www.dbf2002.com/csv-converter/commandline.html

"c:\Program Files\CSV Converter\csvcnv.exe" c:\base\*.csv c:\exports\ /TOXLSX /SRCHDR

" Convert XLS " von SoftInterface kann Excel verwenden (ist jedoch nicht erforderlich) und ist teurer (über 500 US-Dollar), unterstützt jedoch mehr Formate und bietet mehr Optionen.

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 " ist ein Open-Source-Tabellenkalkulationsprogramm, das eine direkte Konvertierung durchführen kann. Es wurde jedoch im August 2014 für Windows eingestellt.

http://www.gnumeric.org/

ssconvert file.csv file.xlsx

Wenn Sie Python installiert haben, ist " csv2odf " eine Open-Source-Option und verwendet einen Vorlagenansatz zum Generieren von ods-, odt-, html-, xlsx- oder docx-Dateien.

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

csv2odf data.csv template.odt output.xlsx

-1

Der einfache Weg: Öffnen Sie Ihre CSV-Datei in Microsoft Excel, konvertieren Sie Text in Spalten (wählen Sie die Zellen / den Text aus, klicken Sie auf Menü - Daten - Text in Spalten) und legen Sie die Option zum Konvertieren fest.

Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.