Направих скрипт, използващ xlrd за извличане на множестводанни от множество клетки в множество Excel файлове и използва xlwt за записване на тези данни в нов excel файл. В новия excel файл добавих два допълнителни реда с формула, която ще изчисли средното и ttest. Сега аз съм се опитва да добавите скрипт, който ще търси чрез ttest линия и всички стойности, които са под 0.05 да бъдат оцветени в червено. На stackoverflow Намерих някаква помощ, но аз все още получават грешка. използвам този източник: https://pypi.python.org/pypi/xlwt)
Бихте ли ми помогнали, моля ?
Благодаря !
from xlwt import *
style = xlwt.easyxf("font: colour red, bold on")
wb=xlwt.Workbook()
wbs=wb.add_sheet("sheet_to_write")
w=xlrd.open_workbook("file_to_read.xlsx")
ws=w.sheet_by_name("sheet_to_read")
c=ws.cell(2,6).value
wbs.write(46,1,c)
... #same as the last two lines, extracting different cells from the sheet_to_red and writing them in the sheet_to_write
wbs.write(61,1,Formula("TTEST($B3:$B18, $B19:$B57, 2, 2)"))
Стар код:
for p in range(61):
p.append(str(sheet.cell(row,col).value))
if p.value < 0.05:
cell.color =="22"
код 2:
for row in range(61):
for col in range(wbs.nrows):
cell=ws.cell(row,col)
try:
if float(cell.value) < 0.05:
cell.color =="22"
except ValueError: pass
AttributeError: "Cell" object has no attribute "color"
код 3:
for row in range(61):
for col in range(wbs.nrows):
search=wbs.cell(row,col)
try:
if float(search.value) < 0.05:
wbs.write(row, col, search.value, style)
except ValueError: pass
ERROR:
AttributeError: "Worksheet" object has no attribute "cell",
Моето заключение: този метод няма да работи, защото xlwt няма клетка атрибут, или nrows, тези attibutes са специфични за xlrd. Следователно, единственият метод, който ще работи е да се създаде друг файл, който ще използва xlrd, търсене на специфичната стойност и запис към нов файл. Благодаря Pyrce и tmrlvi за вашата помощ!
Отговори:
3 за отговор № 1Опитвате се да добавите низ към цяло число, когато просто искате задание. Предполагам, че искате да направите нещо подобно:
# Generate a color style for writing back into xlwt
xlwt.add_palette_colour("my_color", 0x22)
style = xlwt.easyxf("font: colour my_color;")
for row in range(61):
cell = input_sheet.cell(row, col)
try:
if float(cell.value) < 0.05:
output_sheet.write(row, col, cell.value, style)
except ValueError: pass
Също така можете да видите, че присвояването на цветовете е aмалко по-различно в xlwt, отколкото бихте очаквали. Може също да се наложи да прегледате всички клетки и да ги копирате в изходния лист или да споделите същия лист, който беше прочетен, за да направите това точно каквото искате.