2012-10-19 7 views
1

Comment puis-je convertir un fichier CSV avec délimiteur : en XLS (feuille Excel) en utilisant le module openpyxl?openpyxl convertir CSV en EXCEL

+0

, je dispose d'un fichier csv et je veux juste convertir dans Excel. Je suis nouveau en python donc aucune idée. – Satish

+0

Ensuite, vous avez tort sur Stackoverflow. – dav1d

+0

que voulez-vous dire? – Satish

Répondre

10

Eh bien là, vous allez ...

import csv 
from openpyxl import Workbook 
from openpyxl.cell import get_column_letter 

f = open(r'C:\Users\Asus\Desktop\herp.csv') 

csv.register_dialect('colons', delimiter=':') 

reader = csv.reader(f, dialect='colons') 

wb = Workbook() 
dest_filename = r"C:\Users\Asus\Desktop\herp.xlsx" 

ws = wb.worksheets[0] 
ws.title = "A Snazzy Title" 

for row_index, row in enumerate(reader): 
    for column_index, cell in enumerate(row): 
     column_letter = get_column_letter((column_index + 1)) 
     ws.cell('%s%s'%(column_letter, (row_index + 1))).value = cell 

wb.save(filename = dest_filename) 
+0

eu cette erreur [spatel @ work mg0008] $ Python26 c2x.py retraçage (le plus récent appel dernier): Fichier "c2x.py", ligne 17, à pour ROW_INDEX, ligne dans enumerate (lecteur): _csv.Error: caractère de nouvelle ligne vu dans un champ non coté - avez-vous besoin d'ouvrir le fichier en mode universal-newline? – Satish

+2

après le changement cela fonctionne comme ça! f = open ('nice.txt', "rU") – Satish

+0

Nice, mais le fichier résultant s'ouvre avec tous les champs de nombre indiquant qu'ils sont enregistrés en tant que texte au lieu d'être un numéro ... – MrMobileMan

16

beaucoup plus simple, solution minimaliste:

import csv 
import openpyxl 

wb = openpyxl.Workbook() 
ws = wb.active 

f = open('file.csv') 
reader = csv.reader(f, delimiter=':') 
for row in reader: 
    ws.append(row) 
f.close() 

wb.save('file.xlsx') 
rien
+0

Ceci est un très bon – mahmood

+0

Ceci est une meilleure réponse. L'ajout est meilleur que la méthode ws.cell(). – G4mo