2013-04-25 83 views
2

我的目标是将位于目录中的csv文件转换为xls文件。在Python csv到xls转换期间修改的格式

我的csv文件特别由行“标记”(例如1.0000,2.0000 ...)和行“日期”(例如26/04/2013)组成。 这两行的格式对我来说非常重要。

我使用下面的代码:

import sys, csv, xlwt, glob, os 
import shutil 

def cont_directory(): 
    return glob.glob('/home/julien/excel/csv/*.csv') 
liste = cont_directory() 

try: 
    for i in liste: 
     f=open(i, 'rb') 
     g = csv.reader ((f), delimiter = ";") 
     workbook=xlwt.Workbook() 
     sheet= xlwt.Workbook() 


     sheet = workbook.add_sheet("To be modified") 

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

except: 
    print "epic_fail_Conversion", sys.exc_info() 


for i in glob.glob ('/home/julien/excel/csv/*.xls'): 
    shutil.copy2 (i, '/home/julien/excel/xls') 

try: 
    for j in glob.glob('/home/julien/excel/xls/*.xls'): 
     os.rename (j, j.replace ('.csv', '')) 

except: 
     print "epic_fail_Conversion", sys.exc_info() 


print "End" 

该代码工作得很好,我有我的新的Excel文件。

问题是我的行在该转换过程中已被修改。 例如,“标记”行的内容是1而不是1.00000。 此外,行“日期”的内容是2013/04/26而不是26/04/2013。

你知道我能做些什么,为了保持我的csv文件的初始格式行吗?

非常感谢。

+1

此博客条目可能有所帮助:http://www.youlikeprogramming.com/2011/04/examples-generating-excel-documents-using-pythons-xlwt/ – ditkin 2013-04-25 22:37:39

回答

1

您可以定义日期和数字的样式,然后使用条件来应用样式。例如:

datestyle = xlwt.XFStyle() 
datestyle.num_format_str = 'D/M/YYYY' 

numstyle = xlwt.XFStyle() 
numstyle.num_format_str = '#,##0.0000' 

.... 

for rowi, row in enumerate(g): 
      for coli, value in enumerate(row): 
       if coli == 0: #or wherever your date is, if it's in a fixed spot 
        sheet.write(rowi,coli,value, datestyle) 
       elif coli == 1: #or wherever your number is 
        sheet.write(rowi,coli,value, numstyle) 
       else: 
        sheet.write(rowi,coli,value) 

对不起,如果它不是很正确,我会写出来的时候我会跑出门去。但希望它能让你走向正确的方向。

+0

谢谢你们两位!它最终通过使用“encoding ='ascii'”子句来工作。 – Julien 2013-05-06 10:17:39