我使用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,这些属性特定于xlrd。因此,唯一可行的方法是创建另一个将使用xlrd的文件,搜索特定值,并将其写入新文件。 感谢Pyrce和tmrlvi的帮助!
答案 0 :(得分:3)
当您只想要一个作业时,您尝试将字符串附加到整数。我猜你打算做这样的事情:
# 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中的颜色分配与您预期的略有不同。您可能还需要迭代所有单元格并将它们复制到输出表格,或共享读取的相同表格,以使其完全符合您的要求。
答案 1 :(得分:0)
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