2013-05-02 3 views
5

Sto provando a rimuovere gridlines dal foglio di lavoro Excel che ho creato usando openpyxl, e non funziona. sto facendo questo:Rimozione griglie da excel usando python (openpyxl)

wb = Workbook() 
ws = wb.get_active_sheet() 
ws.show_gridlines = False 
print ws.show_gridlines 
wb.save('file.xlsx') 

Il che codice stampa il 'falso', ma il file salvato mostra le linee della griglia.

risposta

5

Nel rilevatore di problemi openpyxl è presente un numero rilevante di issue. Inoltre, in base al codice sorgente show_gridlines è solo una proprietà della classe del foglio di lavoro che non ha alcun effetto. Basta guardare il problema per ottenere qualsiasi aggiornamento su di esso.

Come soluzione alternativa, prova il nuovo e fantastico modulo xlsxwriter. Ha la capacità di nascondere le linee della griglia su un foglio di lavoro (vedere docs). Ecco un esempio:

from xlsxwriter.workbook import Workbook 

workbook = Workbook('hello_world.xlsx') 
worksheet = workbook.add_worksheet() 

worksheet.write('A1', 'Hello world') 
worksheet.hide_gridlines(2) 

workbook.close() 
+1

xlsxwriter ha un bell'aspetto. Grazie per il link. l'hai profilato? Come si confronta con xlwt? Ho usato openpyxl in passato ed era molto più lento di xlwt se si scrivono molte celle. – sherve

+1

Sì, sembra promettente! Sfortunatamente, non l'ho profilato. Cordiali saluti, ecco [alcune informazioni] (https://xlsxwriter.readthedocs.org/en/latest/working_with_memory.html) sull'argomento delle prestazioni. Inoltre, ovviamente, può funzionare solo con 'xlsx'. – alecxe

+1

+1 per XlsxWriter. @sherve: Ho eseguito alcuni test delle prestazioni informali, e per me XlsxWriter è paragonabile a xlwt e notevolmente più veloce di openpyxl. –

1

Questo è stato fissato nel 2015.

Ecco la soluzione consigliata (dalla descrizione di issue)

from openpyxl import Workbook 
wb = Workbook() 
ws = wb.active 
ws.sheet_view.showGridLines 
True 
ws.sheet_view.showGridLines = False 
wb.save("gridlines.xlsx") 

Attenzione che è necessario digitare ws.sheet_view.showGridLines e non ws.showGridLines .