我想格式化电子表格(xls 或 xlsx),以便通过用特定颜色填充背景来格式化包含单词或以特定字符串结尾的任何单元格。
例如,如果单元格包含“已删除”一词,请将其填充为黑色并将文本涂成白色。如果单元格以“.pf”结尾,则将单元格涂成红色。
我从几年前发现了一个类似的问题,它提出了以下建议:
import xlrd
import xlutils.copy
inBook = xlrd.open_workbook('input.xls', formatting_info=True)
outBook = xlutils.copy.copy(inBook)
def _getOutCell(outSheet, colIndex, rowIndex):
""" HACK: Extract the internal xlwt cell representation. """
row = outSheet._Worksheet__rows.get(rowIndex)
if not row: return None
cell = row._Row__cells.get(colIndex)
return cell
def setOutCell(outSheet, col, row, value):
""" Change cell value without changing formatting. """
# HACK to retain cell style.
previousCell = _getOutCell(outSheet, col, row)
# END HACK, PART I
outSheet.write(row, col, value)
# HACK, PART II
if previousCell:
newCell = _getOutCell(outSheet, col, row)
if newCell:
newCell.xf_idx = previousCell.xf_idx
# END HACK
outSheet = outBook.get_sheet(0)
setOutCell(outSheet, 5, 5, 'Test')
outBook.save('output.xls')
虽然这确实将值从 input.xls 复制到 output.xls,但这似乎并没有传输格式(input.xls 中的测试值在打开 output.xls 时不再被格式化,条件格式规则也没有出现在“管理规则”在 Excel 中。
数字值的“if”语句似乎有效,但同样,我正在寻找一种方法来格式化包含某些字符串的单元格。谢谢!