【发布时间】:2019-09-16 14:28:41
【问题描述】:
我正在尝试创建一个程序来读取包含一些数据的 excel 文件,询问用户输入,如果输入的输入等于单元格中的数据,则单元格会突出显示。在将用户的输入与数据进行比较之前,此代码目前运行良好。
但是,如果与输入的输入匹配,我找不到突出显示单元格的正确方法。我能做些什么呢?我尝试使用 xlsxwriter 进行条件格式化,但在浏览文档时意识到它只能用于创建新文件而不能更改或修改现有文件,并尝试在此处使用 openpyxl 但无济于事。抱歉,我对此有点陌生,非常感谢修复此代码的一些帮助
import pandas as pd
import xlsxwriter
from openpyxl import Workbook
from openpyxl.styles import Color, PatternFill, Font, Border
from openpyxl.styles.differential import DifferentialStyle
from openpyxl.formatting.rule import ColorScaleRule, CellIsRule,
FormulaRule
def checkIfValuesExists1(dfObj, listOfValues):
''' Check if given elements exists in dictionary or not'''
resultDict = {}
# Iterate over the list of elements one by one
for elem in listOfValues:
# Check if the element exists in dataframe values
if elem in dfObj.values:
resultDict[elem] = True
else:
resultDict[elem] = False
# Returns a dictionary of values & their existence flag
return resultDict
def main():
import pandas as pd
df=pd.read_excel("filename.xlsx")
df
# Create a DataFrame object
empDfObj = pd.DataFrame(df, columns=['Name', 'LastName',
'MiddleName'])
print('Contents of the dataframe :')
print(empDfObj)
print('**** Check if an element exists in DataFrame using in & not in
operators ****')
x= str(input("Enter your text: "))
print('** Use in operator to check if an element exists in dataframe
**')
if x in empDfObj.values:
df.style.apply(lambda y:['background:red' if x == df.Category else
'background:green' for x in df],axis=0)
print('Element exists in Dataframe')
else:
print('Element does not exist in Dataframe')
# Check if 'Hello' doesn't exist in DataFrame
# if 'Hello' not in empDfObj.values:
#print('Element does not exist in Dataframe')
# Get the xlsxwriter workbook and worksheet objects.
df.to_excel('output1.xlsx', engine='xlsxwriter')
if __name__ == '__main__':
main()
【问题讨论】:
-
“如果与输入的输入匹配,则突出显示一个单元格。”:这是不可能的,
Rule指的是@987654323 @,例如10=>Rule .cell value in range(5, 20)。您最接近的解决方案可以是辅助单元格值,例如.cell.value == '*'=>Rule .helper_cell.value == '*'
标签: python excel conditional-formatting