2016-06-28 64 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库目前不支持此格式。