2011-10-05 12 views

risposta

1

È una constatazione di fatto o dovrebbe xlwt supportare più di 256 colonne? Che errore ottieni? Com'è il tuo codice?

Se ha un limite di 256 colonne, è sufficiente scrivere i dati in un file csv utilizzando il modulo python appropriato e importare il file in Excel.

0

linea 8 nel file Column.py nel pacchetto xlwt imposta il limite della colonna a 256:

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

Si potrebbe modificare questo numero nella fonte xlwt per consentire a più colonne, ma questo si romperà la compatibilità con i più anziani (modifica: TUTTE) versioni di Excel.

EDIT Il manutentore xlwt dice che questo non funzionerà, quindi non cercare di farlo (Lascio questa risposta qui come penso che sia utile avere l'avvertimento).

+0

ho cambiato, ma non funziona compagno – Ricky

+0

Wow, il mio primo voto negativo! Guarda il tuo messaggio di errore (quello che hai aggiunto alla tua risposta) e correggi anche la riga 76 in Row.py. È lo stesso problema. –

+4

E non è il tuo ultimo se continui ad andare avanti come un bashi-bazouk. Ci sono tre posti da cambiare. Non è quello che aiuterà. Excel 2007 evoca dati illeggibili, tenta il recupero e fallisce miseramente. Perché TF pensi che quei controlli degli errori siano lì? ** Un messaggio dal manutentore xlwt: non farlo. È uno spreco di tempo e fatica. Excel 2003, 2007 e 2010 si rifiuteranno di aprire il file. ** –

13

xlwt supporta la creazione di file XLS del tipo creato da Excel 97-2003 e letto da Excel 97 in poi. Il formato del file è limitato a 256 colonne e 65536 righe. Nessuna quantità di modifica di 256 su un altro numero nel codice sorgente xlwt cambierà quello.

hai 3 opzioni, in ordine crescente di complessità:

(1) come suggerito da un altro, scrivere un file CSV.

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

(3) win32 COM (solo Windows)

+0

Ciò che ha funzionato per me era una versione diversa dell'opzione 2. Ho usato xlswriter (https://pypi.python.org/pypi/XlsxWriter) invece perché il codice cambia per passare ad esso (per me) erano molto pochi come workbook_name = "testraw.xls"> workbook_name = "testraw.xlsx", wb = xlwt.Workbook()> wb = xlsxwriter.Workbook (nome), ws = wb.add_sheet (nome foglio)> ws = wb.add_worksheet (nome foglio), wb .save (sheet_name + '. xlsx')> wb.close(). Questo potrebbe aiutare qualcuno a spostarsi velocemente. Come Excel 12, in cui Excel 2007 ha introdotto .xlsx e .xlsb che supporta fino a 1.048.576 righe per 16.384 colonne. quindi dovrebbe fare per la maggior parte degli scopi. – Aameer

0

uso xlsxwriter e panda.

import xlsxwriter, pandas 

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

La domanda riguarda specificamente il modulo 'xlwt' – Milk