2016-06-28 79 views
0

我想導出二元矩陣擅長.. 我使用的是什麼,我已經從Write list of lists to excel file using xlwtPython的二元矩陣到Excel

教訓和我得到的尺寸誤差 好,我有二元矩陣2221x9947和下面的代碼:

def wrapper(fn, *args, **kwargs): 
    def wrapped(): 
     return fn(*args, **kwargs) 
    return wrapped 

def int_to_str_matriz(matriz): 
    for i in xrange(len(matriz)): 
     for j in xrange(len(matriz[i])): 
      matriz[i][j] = str(matriz[i][j]) 
    return matriz 

def escreve_matriz_xml(rows, sheet): 
    for i, row in enumerate(rows): 
     for j, col in enumerate(row): 
      sheet.write(i, j, col) 

def exportar_matriz(matriz): 
    book = xlwt.Workbook() 
    name = "matrizbinaria.xls" 
    sheet1 = book.add_sheet("teste", cell_overwrite_ok=True) 
    exportar = wrapper(escreve_matriz_xml(matriz, sheet1)) 
    book.save(name) 
    book.save(TemporaryFile()) 

我第一次使用mb = int_to_str_matriz(matriz)整數的矩陣轉換爲海峽,那麼我的新矩陣傳遞給exportar_matriz(mb)

我想這一點,並獲得

ValueError: column index(256) not an int in range(256) 

如果我嘗試了另一種選擇,它給了在我引用的話題,使用

def escreve_matriz_xml(rows, sheet): 
    rows = [', '.join(row) for row in rows] 
    for i, strrow in enumerate(rows): 
     sheet.write(i, 0, strrow) 

它的工作原理,但問題是這是沒有用的,因爲我需要每列都有(0,1),所以我可以分析數據.. 任何解決方案? 我試過沒有str轉換,並得到相同的錯誤...

+0

你的第一個錯誤是xlwt的一個限制:http://stackoverflow.com/questions/7658513/python-xlwt-more-than-256-columns –

回答

0

你將無法使用xlwt做到這一點。請考慮導出爲.csv格式(使用庫如csv,numpypandas或者不借助庫)。

.xls(Excel 2003中)的文件類型限制爲65536行和256 columns,所以也沒有辦法,你可以導出你的2221通過使用xlwt 9947矩陣(除非你將其轉化爲不同的形狀第一)。此限制已在後續文件類型(如.xlsx(Excel 2007))上刪除,但xlwt庫目前不支持此格式。