python – openpyxl中的R1C1
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了python – openpyxl中的R1C1,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含1846字,纯文字阅读大概需要3分钟。
内容图文
我正在尝试在openpyxl中设置条件格式以模拟突出显示重复值.使用这个简单的代码,我应该能够突出显示连续的重复项(但不是重复序列中的第一个值).
from pandas import *
data = DataFrame({'a':'a a a b b b c b c a f'.split()})
wb = ExcelWriter('test.xlsx')
data.to_excel(wb)
ws = wb.sheets['Sheet1']
from openpyxl.style import Color, Fill
# Create fill
redFill = Fill()
redFill.start_color.index = 'FFEE1111'
redFill.end_color.index = 'FFEE1111'
redFill.fill_type = Fill.FILL_SOLID
ws.conditional_formatting.addCellIs("B1:B1048576", 'equal', "=R[1]C", True, wb.book, None, None, redFill)
wb.save()
但是,当我在Excel中打开它时,我得到与条件格式相关的错误,并且数据未按预期突出显示. openpyxl是否能够处理R1C1样式引用?
解决方法:
关于突出显示顺序值的重复,您想要的公式是
=AND(B1<>"",B2=B1)
范围从B2开始(又名,B2:B1048576)
注意 – 这似乎在openpyxl的当前1.8.3分支中被破坏,但很快将在1.9分支中修复.
from openpyxl import Workbook
from openpyxl.style import Color, Fill
wb = Workbook()
ws = wb.active
ws['B1'] = 1
ws['B2'] = 2
ws['B3'] = 3
ws['B4'] = 3
ws['B5'] = 7
ws['B6'] = 4
ws['B7'] = 7
# Create fill
redFill = Fill()
redFill.start_color.index = 'FFEE1111'
redFill.end_color.index = 'FFEE1111'
redFill.fill_type = Fill.FILL_SOLID
dxfId = ws.conditional_formatting.addDxfStyle(wb, None, None, redFill)
ws.conditional_formatting.addCustomRule('B2:B1048576',
{'type': 'expression', 'dxfId': dxfId, 'formula': ['AND(B1<>"",B2=B1)']})
wb.save('test.xlsx')
作为进一步的参考:
>如果要突出显示所有重复项:
COUNTIF(B:B,B1)→1
>如果要突出显示除第一次出现以外的所有重复项:
COUNTIF($B $2:$B2,B2)→1
>如果要突出显示顺序重复项,则最后一项除外:
COUNTIF(B1:B2,B2)→1
关于RC表示法 – 虽然openpyxl不支持excel RC表示法,但条件格式化将按照提供的方式编写公式.不幸的是,excel只能将R1C1表示法表面化,并在保存时将所有公式转换回它们的A1等价物,这意味着您需要一个函数将所有R1C1函数转换为它们的A1等效函数才能生效.
内容总结
以上是互联网集市为您收集整理的python – openpyxl中的R1C1全部内容,希望文章能够帮你解决python – openpyxl中的R1C1所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。