2012-03-26 114 views
-1
file_name = files.blobstore.create(mime_type='application/ms-excel', _blobinfo_uploaded_filename='sample.xls') 
    wbk = xlwt.Workbook() 
    sheet = wbk.add_sheet('Sheet 1') 
    stringa = str(newfile.text) 
    s3 = stringa.split('\n') 
    i=1 
    for riga in s3: 
     s2=riga.split() 
     try: 
      x = float(s2[0]) 
      y = float(s2[1]) 
      sheet.write(i, 1, '%g' %x) 
      sheet.write(i, 2, '%14.3e' %y) 
     except: 
      sheet.write(i, 1, '%s' %s2[0]) 
      sheet.write(i, 2, '%s' %s2[1]) 
     i=i+1 

文件 「/base/data/home/apps/s~marco-busso/1.357756583016056739/helloworld.py」,線路140,在交 sheet.write(I,1, '%s'%s2 [0]) IndexError:列表索引超出範圍索引列表錯誤谷歌應用程序引擎

爲什麼?

回答

1

顯然s2爲空,表示riga是一個空字符串。 stringa連續有多個'\n'?檢查newfile.text,也許這是一個空行。

爲了防止錯誤,你可以用循環體中的if語句,如:

for riga in s3: 
    if riga: 
     s2=riga.split() 
     try: 
      x = float(s2[0]) 
      y = float(s2[1]) 
      sheet.write(i, 1, '%g' %x) 
      sheet.write(i, 2, '%14.3e' %y) 
     except: 
      sheet.write(i, 1, '%s' %s2[0]) 
      sheet.write(i, 2, '%s' %s2[1]) 
     i=i+1 
+0

謝謝....最後一行是empty.Can我控件添加刪除空行? – user1281174 2012-03-26 08:25:32

+0

當然。例如,你可以將'for'循環的內容封裝在'if riga:'語句中。 – 2012-03-26 08:38:31

+0

我已經添加了一個示例。 – 2012-03-26 08:54:17