2016-06-28 3 views
0

Я пытаюсь экспортировать бинарную матрицу отличиться .. Я использую то, что я узнал от Write list of lists to excel file using xlwtPython Binary Матрица для 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, numpy, либо pandas, либо без помощи библиотеки).

Тип файла .xls (Excel 2003) ограничена 65536 строк и 256 columns, так что нет никакого способа, вы можете экспортировать 2221 по 9947 матрицы с использованием xlwt (если вы не превратить его в другую форму первой). Это ограничение было удалено при более поздних типах файлов, таких как .xlsx (Excel 2007), но библиотека xlwt в настоящее время не поддерживает этот формат.