2012-10-19 211 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