Sto cercando un modo per convertire rapidamente una directory di file .csv nel formato .xls o .xlsx (sarebbe bello se potessi fare uno o / o).
C'è un modo semplice per farlo o devo installare un programma di terze parti?
Sto cercando un modo per convertire rapidamente una directory di file .csv nel formato .xls o .xlsx (sarebbe bello se potessi fare uno o / o).
C'è un modo semplice per farlo o devo installare un programma di terze parti?
Risposte:
Supponendo che ti piaccia e abbia Python (per qualche motivo), potresti usare questo script che ho creato:
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')
Ha funzionato nella directory con tutti i file CSV, li convertirà tutti e schiaffeggerà un ".xls" alla fine.
Per Excel 2007+ (file xlsx) che supportano fino a circa 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')
C'è molto da dire sulla tua domanda.
Supponendo che i file CVS si trovino in una struttura di directory simile a
c:\randompath\CSV\
a.csv
b.csv
c.csv
:
:
z.csv
e vuoi finire con
c:\randompath\XLS\
a.xls
b.xls
c.xls
:
:
z.xls
Posso pensare a tre percorsi da percorrere a seconda del rapporto tra lavoro iniziale e lavoro di pulizia che sei disposto a fare.
Nota che non ho ancora scritto alcun codice per fare queste cose (sto solo offrendo idee per un punto di partenza). Forse se potessi fornire maggiori dettagli su ciò che desideri, potresti ottenere spiegazioni più dettagliate su come gestire l'approccio da parte mia o di un altro membro del forum.
Per Windows? La versione della riga di comando " Total CSV Converter " di CoolUtils supporta molti formati di output tra cui JSON, Access, DBF, XML e SQL ed è a soli $ 40. Può ricorrere a sottodirectory, eliminare file CSV originali, combinare tutti i file in un documento e altro.
http://www.coolutils.com/TotalCSVConverter
CSVConverter.exe <source> <destination> <options>
" Advanced CSV Converter " ($ 40-200) è un EXE portatile che può farlo rapidamente e senza che Excel debba essere installato.
http://www.dbf2002.com/csv-converter/commandline.html
"c:\Program Files\CSV Converter\csvcnv.exe" c:\base\*.csv c:\exports\ /TOXLSX /SRCHDR
" Convert XLS " di SoftInterface può utilizzare Excel (ma non è necessario) ed è più costoso ($ 500 +), ma supporta più formati e ha più opzioni.
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 " è un programma per fogli di calcolo open source che può eseguire una conversione diretta, ma è stato sospeso per Windows nell'agosto 2014.
ssconvert file.csv file.xlsx
Se hai installato Python, " csv2odf " è un'opzione open source e utilizza un approccio basato su modelli per generare file ods, odt, html, xlsx o docx.
http://sourceforge.net/projects/csv2odf/
csv2odf data.csv template.odt output.xlsx
Con Nodo 8+ e bash:
npm install -g pguardiario/csv2xlsx
for file in *.csv; do csv2xlsx "$file"; done