【问题标题】:Highlighting an excel cell using conditional formatting in python在python中使用条件格式突出显示一个excel单元格
【发布时间】: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


【解决方案1】:

要获取单元格的值,您只需使用 .cell 并选择此处回答的行和列 - Reading particular cell value from excelsheet in python

【讨论】:

  • 谢谢!但是我正在寻找的是一种在输入与单元格值匹配后突出显示单元格的方法
  • 我明白了,可能在您的代码中实现mask = np.column_stack([df[col].str.contains(r"\^", na=False) for col in df]) df.loc[mask.any(axis=1)] 以检查每一列,然后在每一列上使用str.contains。来源 - stackoverflow.com/questions/26640129/…
  • 谢谢!接受输入并与单元格值进行比较/匹配的过程似乎工作得很好!我一直在寻找的是正确的语法来将条件格式/突出显示应用于单元格
猜你喜欢
  • 2018-05-02
  • 1970-01-01
  • 1970-01-01
  • 2023-03-10
  • 2020-05-26
  • 1970-01-01
  • 2018-04-08
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多