/ / python xlwt - търсене на конкретна стойност - python, search, xlrd

python xlwt - търсене на определена стойност - python, search, xlrd

Направих скрипт, използващ 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, отколкото бихте очаквали. Може също да се наложи да прегледате всички клетки и да ги копирате в изходния лист или да споделите същия лист, който беше прочетен, за да направите това точно каквото искате.