Ho bisogno di stilizzare determinate celle e righe in un file xls che creo attraverso il mio programma, ma ho alcuni problemi, possibili equivoci su come funziona la xlwt easyxf.Python xlwt: usare easyxf per stilizzare le celle quando si scrive bug
Innanzitutto, se scrivo sulla cella senza un valore e solo lo stile, il valore all'interno viene cancellato?
In secondo luogo, sto cercando di scrivere alle celle con lo stile e il valore della cella, ma continuo a ricevere un errore:
"TypeError: 'XFStyle' object is not callable". -Solved
Ora il problema è che gli stili non vengono attuate. Dopo aver scritto le celle e averlo esportato in un file xls, non ci sono stati cambiamenti di colore, bg, dimensioni e font.
Ho provato su Google questo e stavo seguendo gli esempi di altre persone, ma per qualsiasi motivo, il mio codice non funziona. Eccolo:
def stylize_spreadsheet_accordingly(iFile, workbook, row_grey, row_underline, row_font_size, cells_yellow):
#this time iFile is the file you're overwriting
#styling stuff
print "styling the document..."
new_sheet.col(0).width = 256 * 18
new_sheet.col(1).width = 256 * 69.43
new_sheet.col(2).width = 256 * 9
new_sheet.col(3).width = 256 * 20.71
new_sheet.col(4).width = 256 * 8.43
font_size_style = xlwt.easyxf('font: name Calibri, bold on, height 280;')
font_underline_style = xlwt.easyxf('font: underline on;')
fill_grey_style = xlwt.easyxf('pattern: back_color gray25;')
fill_yellow_style = xlwt.easyxf('pattern: back_color yellow;')
iBook = open_workbook(iFile)
iSheet = iBook.sheet_by_index(0)
for row_index in range(iSheet.nrows):
if row_index in row_grey:
for col_index in range(iSheet.ncols):
new_sheet.write(row_index,col_index, iSheet.cell(row_index,col_index).value, fill_grey_style)
if row_index in row_underline:
for col_index in range(iSheet.ncols):
new_sheet.write(row_index,col_index, iSheet.cell(row_index,col_index).value, font_underline_style)
if row_index in row_font_size:
for col_index in range(iSheet.ncols):
new_sheet.write(row_index,col_index, iSheet.cell(row_index,col_index).value, font_size_style)
for each in cells_yellow:
new_sheet.write(each[0], each[1], iSheet.cell(each[0],each[1]).value, fill_yellow_style)
return workbook
new_sheet
è una variabile globale che ho fatto in un'altra funzione che rappresenta il foglio ho aggiunto alla mia cartella di lavoro xlwt. La cartella di lavoro che passo è il file che dovrebbe contenere quello new_sheet
. Potrei finire per complicarlo o farlo in modo non etico, ma funziona.
P.S. Se c'è un modo diverso che potrei fare o cambiare certe celle per essere a colori in un modo diverso, per favore fatemelo sapere. Ancora una volta, grazie.
Grazie, ho corretto il codice per quello che avete detto voi, e il TypeError è andato via, ma dopo il suo completamento, nessuna delle opzioni di stile che ho creato e utilizzato, è andata avanti. Il file xls era ancora nel suo formato predefinito. Come può essere?
Grazie, ma per qualsiasi motivo, nessuno dei miei stili vengono emanate. Tutto funziona, viene compilato e viene eseguito, ma quando apro il documento xls, non c'è alcun cambiamento nel carattere o nel colore. L'unica cosa che cambia sono le larghezze delle colonne. –