python xlwt - 搜索特定值
python xlwt - search for a specific value
我制作了一个脚本,使用 xlrd 从多个 excel 文件的多个单元格中提取多个数据,并使用 xlwt 将这些数据写入一个新的 excel 文件。在新的 excel 文件中,我添加了另外两行,其中包含将计算平均值和 ttest 的公式。
现在我正在尝试添加一个脚本,该脚本将搜索 ttest 行并将所有小于 0.05 的值都显示为红色。在 Whosebug 上我找到了一些帮助,但我仍然收到错误消息。 (对于颜色,我使用的是这个来源: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没有属性cell,也就是nrows,这些属性是xlrd特有的。因此,唯一可行的方法是创建另一个将使用 xlrd 的文件,搜索特定值并将其写入新文件。
感谢 Pyrce 和 tmrlvi 的帮助!
当您只想赋值时,您正试图将一个字符串附加到一个整数上。我猜你是想做这样的事情:
# 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
您还可以看到 xlwt 中的颜色分配与您预期的略有不同。您可能还需要遍历所有单元格并将它们复制到输出 sheet,或共享已读取的相同 sheet 以使其完全符合您的要求。
xlwt
仅支持 xls
格式,下面是用于写入特定单元格值的片段
import xlwt
import xlrd
from xlutils.copy import copy
def writedata():
workbook = xlrd.open_workbook("test.xls", "rb")
wb = copy(workbook)
w_sheet = wb.get_sheet(0)
w_sheet.write(2, 4, 'Updated Value') # row, column, value
wb.save("test.xls")
writedata()
如有错误请安装以下包
pip install xlwt
pip install xlrd
pip install xlutils
我制作了一个脚本,使用 xlrd 从多个 excel 文件的多个单元格中提取多个数据,并使用 xlwt 将这些数据写入一个新的 excel 文件。在新的 excel 文件中,我添加了另外两行,其中包含将计算平均值和 ttest 的公式。
现在我正在尝试添加一个脚本,该脚本将搜索 ttest 行并将所有小于 0.05 的值都显示为红色。在 Whosebug 上我找到了一些帮助,但我仍然收到错误消息。 (对于颜色,我使用的是这个来源: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没有属性cell,也就是nrows,这些属性是xlrd特有的。因此,唯一可行的方法是创建另一个将使用 xlrd 的文件,搜索特定值并将其写入新文件。 感谢 Pyrce 和 tmrlvi 的帮助!
当您只想赋值时,您正试图将一个字符串附加到一个整数上。我猜你是想做这样的事情:
# 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
您还可以看到 xlwt 中的颜色分配与您预期的略有不同。您可能还需要遍历所有单元格并将它们复制到输出 sheet,或共享已读取的相同 sheet 以使其完全符合您的要求。
xlwt
仅支持 xls
格式,下面是用于写入特定单元格值的片段
import xlwt
import xlrd
from xlutils.copy import copy
def writedata():
workbook = xlrd.open_workbook("test.xls", "rb")
wb = copy(workbook)
w_sheet = wb.get_sheet(0)
w_sheet.write(2, 4, 'Updated Value') # row, column, value
wb.save("test.xls")
writedata()
如有错误请安装以下包
pip install xlwt
pip install xlrd
pip install xlutils