Hızlı bir şekilde .csv dosyalarının bir dizinini .xls veya .xlsx biçimine dönüştürmenin bir yolunu arıyorum (/ veya yapabilirsem iyi olurdu).
Bunu yapmanın kolay bir yolu var mı yoksa bir üçüncü taraf programı yüklemem gerekiyor mu?
Hızlı bir şekilde .csv dosyalarının bir dizinini .xls veya .xlsx biçimine dönüştürmenin bir yolunu arıyorum (/ veya yapabilirsem iyi olurdu).
Bunu yapmanın kolay bir yolu var mı yoksa bir üçüncü taraf programı yüklemem gerekiyor mu?
Yanıtlar:
Python'u beğendiğinizi ve (bazı nedenlerden dolayı) varsayarsak, çırptığım bu komut dosyasını kullanabilirsiniz:
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')
Tüm CSV dosyaları ile dizinde koştu, hepsini dönüştürecek ve sonuna bir ".xls" tokatlayacaktır.
Yaklaşık 1 Ortamı destekleyen Excel 2007+ (xlsx dosyaları) için:
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')
Sorunuzda söylenmeyen çok şey var.
CVS dosyalarınızın benzer bir dizin yapısında olduğu varsayılarak
c:\randompath\CSV\
a.csv
b.csv
c.csv
:
:
z.csv
ve sonuç olarak
c:\randompath\XLS\
a.xls
b.xls
c.xls
:
:
z.xls
Önceden çalışmanın, yapmak istediğiniz temizlik işine oranına bağlı olarak üç yol düşünebilirim.
Bu şeyleri yapmak için herhangi bir kod yazmadım (henüz) sadece bir başlangıç noktası için fikirler sunuyoruz. İstediğiniz hakkında daha fazla ayrıntı verebilirseniz, benden veya başka bir forum üyesinden yaklaşımı nasıl ele alacağınız hakkında daha ayrıntılı açıklamalar alabilirsiniz.
Pencereler için? CoolUtils " Total CSV Converter " komut satırı sürümü JSON, Access, DBF, XML ve SQL dahil olmak üzere birçok çıkış formatını destekler ve sadece 40 $ 'dır. Alt dizinleri geri alabilir, orijinal CSV dosyalarını silebilir, tüm dosyaları tek bir belgede birleştirebilir ve daha fazlasını yapabilir.
http://www.coolutils.com/TotalCSVConverter
CSVConverter.exe <source> <destination> <options>
" Advanced CSV Converter " (40-200 $) hızlı ve Excel'in yüklenmesi gerekmeden yapabilen taşınabilir bir EXE.
http://www.dbf2002.com/csv-converter/commandline.html
"c:\Program Files\CSV Converter\csvcnv.exe" c:\base\*.csv c:\exports\ /TOXLSX /SRCHDR
SoftInterface'in "XLS'yi Dönüştür " Excel'i kullanabilir (ancak zorunlu değildir) ve daha pahalıdır (500 $ +), ancak daha fazla formatı destekler ve daha fazla seçeneğe sahiptir.
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 ", doğrudan dönüşüm gerçekleştirebilen açık kaynaklı bir elektronik tablo programıdır, ancak Ağustos 2014'te Windows için kullanımdan kaldırılmıştır.
ssconvert file.csv file.xlsx
Python yüklüyse, " csv2odf " açık kaynaklı bir seçenektir ve ods, odt, html, xlsx veya docx dosyaları oluşturmak için şablonlu bir yaklaşım kullanır.
http://sourceforge.net/projects/csv2odf/
csv2odf data.csv template.odt output.xlsx
Düğüm 8+ ve bash ile:
npm install -g pguardiario/csv2xlsx
for file in *.csv; do csv2xlsx "$file"; done