2011-10-05 10 views

Respuesta

1

¿Es eso una afirmación de hecho o debería soportar más de 256 columnas? ¿Qué error obtienes? ¿Cómo se ve tu código?

Si realmente tiene un límite de 256 columnas, simplemente escriba sus datos en un archivo csv utilizando el módulo python apropiado e importe el archivo en Excel.

0

línea 8 en el archivo Column.py en el paquete xlwt establece el límite de la columna a 256:

raise ValueError("column index (%r) not an int in range(256)" % colx) 

Se puede cambiar este número en la fuente xlwt para permitir más columnas, pero esto rompe la compatibilidad con versiones anteriores de (edit: ALL) versiones de excel.

EDITAR El mantenedor xlwt dice que esto no funcionará, por lo no trate de hacerlo (voy a dejar esta respuesta aquí ya que creo que es útil tener la advertencia).

+0

He cambiado, pero no funciona mate – Ricky

+0

¡Guau, mi primer voto negativo! Mire su mensaje de error (el que ha agregado a su respuesta) y corrija la línea 76 en Row.py también. Es el mismo problema. –

+4

Y no es el último si continúas como un bashi-bazouk. Hay tres lugares para cambiar. No es que eso ayude. Excel 2007 grita sobre datos ilegibles, intenta la recuperación y falla miserablemente. ¿Por qué TF crees que esos controles de error están ahí? ** Un mensaje del mantenedor xlwt: No hagas esto. Es una pérdida de tiempo y esfuerzo. Excel 2003, 2007 y 2010 se rehusarán a abrir el archivo. ** –

13

xlwt admite la creación de archivos XLS del tipo creado por Excel 97-2003 y leídos por Excel 97 en adelante. El formato de archivo está limitado a 256 columnas y 65536 filas. Ninguna cantidad de cambio de 256 a algún otro número en el código fuente xlwt cambiará eso.

usted tiene 3 opciones, en orden creciente de complejidad:

(1) como se sugiere por otro, escribir un archivo CSV.

(2) openpyxl ... Excel formato 2007+ xlsx/xlsm

(3) COM Win32 (sólo Windows)

+0

Lo que funcionó para mí fue una versión diferente de la opción 2. Utilicé xlswriter (https://pypi.python.org/pypi/XlsxWriter) en su lugar porque el código cambia para cambiar a él (para mí) fueron muy pocos como workbook_name = "testraw.xls"> workbook_name = "testraw.xlsx", wb = xlwt.Workbook()> wb = xlsxwriter.Workbook (nombre), ws = wb.add_sheet (sheet_name)> ws = wb.add_worksheet (sheet_name), wb .save (sheet_name + '. xlsx')> wb.close(). Esto podría ayudar a alguien a cambiar rápidamente. Como Excel 12 también conocido como Excel 2007 introdujo .xlsx y .xlsb, que admite hasta 1,048,576 filas por 16,384 columnas. por lo tanto, debería hacer para la mayoría de los propósitos. – Aameer

0

uso xlsxwriter y pandas.

import xlsxwriter, pandas 

writer = pandas.ExcelWriter(file, engine='xlsxwriter') 
pandas.to_excel(writer, sheet_name='Sheet1') 
writer.save() 
+0

La pregunta es específicamente sobre el módulo 'xlwt' – Milk

Cuestiones relacionadas