2012-10-19 140 views
1

如何使用openpyxl模块将带有:分隔符的CSV文件转换为XLS(Excel工作表)?openpyxl将CSV转换为EXCEL

+0

什么,我有一个CSV文件,我只是想在Excel中转​​换。我是python新手,所以没有线索。 – Satish

+0

然后你在Stackoverflow上错了。 – dav1d

+0

你是什么意思? – Satish

回答

10

那么这里你去...

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

我得到这个错误[spatel @ mg0008工作] $ python26 c2x.py 回溯(最近通话最后一个): 文件 “c2x.py” 17行,在 为ROW_INDEX,排在枚举(读者): _csv.Error:在未加引号的字段中显示换行符 - 是否需要以通用换行符模式打开文件? – Satish

+2

改变之后,它就像它的作品! f = open('nice.txt',“rU”) – Satish

+0

不错,但生成的文件打开,所有数字字段都报告它们被保存为文本而不是数字... – MrMobileMan

16

一个更简单,简约的解决方案:

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

这是一个很好的一个 – mahmood

+0

这是更好的答案。追加是IMO比ws.cell()方法更好的方法。 – G4mo