Potrzebuję stylizować pewne komórki i wiersze w pliku xls, który tworzę poprzez mój program, ale mam kilka problemów, możliwych nieporozumień na temat działania rzeczy Xlwt easyxf.Python xlwt: używanie easyxf do stylizowania komórek podczas pisania błędu
Po pierwsze, jeśli napiszę do komórki bez wartości i tylko stylu, czy wartość wewnątrz zostanie usunięta?
drugie, próbuję napisać do komórek stosując styl i wartość komórki, ale wciąż otrzymuję błąd:
"TypeError: 'XFStyle' object is not callable". -Solved
Teraz problemem jest to, że style nie dostać realizowane. Po zapisaniu komórek i przesłaniu ich do pliku xls nie było w ogóle koloru, bg, rozmiaru, zmian czcionki.
Próbowałem googlować i śledzić przykłady innych osób, ale z jakiegoś powodu mój kod nie działa. Oto ona:
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
to zmienna globalna, że zrobiłem w innej funkcji, która reprezentuje arkusz I dodaną do mojego xlwt skoroszycie. Skoroszyt, który przekazuję, jest plikiem, który powinien zawierać ten kod: new_sheet
. Mogę go komplikować lub robić to nieetycznie, ale działa.
P.S. Jeśli jest inny sposób, w jaki mogę to zrobić, lub zmienić niektóre komórki na pełny kolor w inny sposób, proszę dać mi znać. Jeszcze raz, dzięki.
Dzięki, naprawiłem kod do tego, co mówiliście, a TypeError odszedł, ale po jego zakończeniu żadna z opcji stylizacji, które stworzyłem i nie wykorzystałem, przeszła. Plik xls był nadal w domyślnym formacie. Jak to może być?
Dzięki, ale z jakiegoś powodu, żaden z moich stylów są uchwalone. Wszystko działa, jest kompilowane i działa, ale kiedy otwieram dokument xls, nie ma zmian w czcionce ani kolorze. Jedyną rzeczą, która się zmienia, są szerokości kolumn. –