2013-03-01 92 views
1

我想从列表中打开多个csv文件,然后将它们转换为xls文件。Python:从列表中打开csv文件并将它们转换为xls

我做的,代码:

import sys, csv, xlwt 

files = ['/home/julien/excel/csv/ABORD2.csv'] 

for i in files: 
    f=open(i, 'rb') 
    g = csv.reader ((f), delimiter=";") 
    workbook=xlwt.Workbook() 
    sheet= xlwt.Workbook() 
    sheet = workbook.add_sheet("Sheet 1") 

    for rowi, row in enumerate(g): 
     for coli, value in enumerate(row): 
      sheet.write(rowi,coli,value) 
     workbook.save(i + ".xls") 

我的XLS文件将两者created.But我只有XLS的路径。 例如,对于文件ABORD.xls只有下面的表达式写的是:

'/home/julien/excel/csv/ABORD2.xls' 

请问您有什么建议吗?

+0

您的代码,乍看之下,相貌端正给我。此外,在这里给出的示例代码中有* no *变量将等于'/ home/julien/excel/csv/ABORD2.xls';只有''/ home/julien/excel/csv/ABORD2.csv.xls''。 – 2013-03-01 12:57:02

+0

其实它的作品!是的,你是对的,我忘了正确重命名xls。谢谢Martijn! – Julien 2013-03-01 13:20:21

回答

4

先生,你unnecessairly创建两个工作簿和你保存工作簿错误identation

import csv, xlwt 

files = ['test.csv'] 

for i in files: 
    f=open(i, 'rb') 
    g = csv.reader ((f), delimiter=";") 
    wbk= xlwt.Workbook() 
    sheet = wbk.add_sheet("Sheet 1") 

    for rowi, row in enumerate(g): 
     for coli, value in enumerate(row): 
      sheet.write(rowi,coli,value) 

    wbk.save(i + '.xls') 
+0

缩进效果很好。但是,谢谢你的帮助! – Julien 2013-03-01 13:20:51

+2

好吧,上面的代码对我来说工作得很好。 – 2013-03-01 13:24:06

+1

也为我工作。我很容易将其修改为输出一个包含多个工作表的Excel文件 - 在for循环之外初始化一次工作簿,并在循环内部创建不同名称的工作表。我用这个答案:http://stackoverflow.com/a/9137934/1317713自动调整列宽。 – Leonid 2015-09-13 20:06:02