2013-04-25 44 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