Python Openpyxl-加载具有条件格式的工作簿时出错

Python Openpyxl-加载具有条件格式的工作簿时出错,python,excel,openpyxl,conditional-formatting,Python,Excel,Openpyxl,Conditional Formatting,第一次在这里提问。我正在学习Python,上一段代码遇到了一个问题。作为参考,我使用的是3.6版本,所有东西都是在最近几周安装的,所以应该更新 当我试图用Openpyxl打开一个.xlsm文件时,我得到下面粘贴的错误。从工作簿中删除条件格式后,一切正常。当使用熊猫时,它也起作用 我以前将该模块与其他文件一起使用过,没有问题。我发现了一些类似的问题,但通常都要老得多,而且应该在旧补丁中得到纠正。代码段应该只构建文件路径并处理其他文件。这上面有灯吗 import openpyxl

第一次在这里提问。我正在学习Python,上一段代码遇到了一个问题。作为参考,我使用的是3.6版本,所有东西都是在最近几周安装的,所以应该更新

当我试图用Openpyxl打开一个.xlsm文件时,我得到下面粘贴的错误。从工作簿中删除条件格式后,一切正常。当使用熊猫时,它也起作用

我以前将该模块与其他文件一起使用过,没有问题。我发现了一些类似的问题,但通常都要老得多,而且应该在旧补丁中得到纠正。代码段应该只构建文件路径并处理其他文件。这上面有灯吗

    import openpyxl

    Ano = '-2018'
    arquivo = 'Controle de Produção v2 '
    arquivo = arquivo + dataEx[3:]+ '-' + Ano[3:] 
    wb = openpyxl.load_workbook("C:\\Users\\Desktop\\Dropbox\\Produção Equipes\\"+arquivo+".xlsx")

Traceback(最近一次调用):文件“C:\Users\Desktop\AppData\Local\Programs\Python36-32\lib\site packages\openpyxl\descriptors\base.py”,第57行,在
value=expected_type(value)ValueError:无法将字符串转换为浮点:“$G$16-0.015”
在处理上述异常期间,发生了另一个异常:
回溯(最近一次调用):文件“C:\Users\Desktop\Documents\Hugo\Python\Projetos\Produtividade\Produtividade.py”,第33行,在
wb=openpyxl.load#u工作簿(“C:\\Users\\Desktop\\Dropbox\\Produço Equipes\\”+arquivo+“.xlsx”,False,True)#定义CAMINHO COMPLETO文件“C:\Users\Desktop\AppData\Local\Programs\Python\Python36-32\lib\site packages\openpyxl\reader\excel.py”,在load#工作簿的第245行
ws\u parser.parse()文件“C:\Users\Desktop\AppData\Local\Programs\Python\Python36-32\lib\site packages\openpyxl\reader\worksheet.py”,parse中的第127行
dispatcher[tag_name](元素)文件“C:\Users\Desktop\AppData\Local\Programs\Python\Python36-32\lib\site packages\openpyxl\reader\worksheet.py”,第286行,解析器条件格式
cf=ConditionalFormatting.from_树(元素)文件“C:\Users\Desktop\AppData\Local\Programs\Python36-32\lib\site packages\openpyxl\descriptors\serialisable.py”,第79行,from_树
obj=desc.expected_type.来自_树(el)文件“C:\Users\Desktop\AppData\Local\Programs\Python36-32\lib\site packages\openpyxl\descriptors\serialisable.py”,第79行,来自_树
obj=desc.expected_type.来自_树(el)文件“C:\Users\Desktop\AppData\Local\Programs\Python36-32\lib\site packages\openpyxl\descriptors\serialisable.py”,第79行,来自_树
obj=desc.expected_type.来自_树(el)文件“C:\Users\Desktop\AppData\Local\Programs\Python36-32\lib\site packages\openpyxl\descriptors\serialisable.py”,第92行,来自_树
返回cls(**attrib)文件“C:\Users\Desktop\AppData\Local\Programs\Python\Python36-32\lib\site packages\openpyxl\formatting\rule.py”,第60行,在__
self.val=val文件“C:\Users\Desktop\AppData\Local\Programs\Python36-32\lib\site packages\openpyxl\formatting\rule.py”,第39行,在__
super(ValueDescriptor,self)。\uuuuuuuu集\uuuuuuuuuu(实例,值)文件“C:\Users\Desktop\AppData\Local\Programs\Python36-32\lib\site packages\openpyxl\descriptors\base.py”,第69行,在\uuuuuuu集中__
value=\u convert(self.expected\u type,value)文件“C:\Users\Desktop\AppData\Local\Programs\Python36-32\lib\site packages\openpyxl\descriptors\base.py”,第59行,在\u convert中
raise TypeError('expected'+str(expected_type))类型错误:expected

嗯,不是一个明确的答案,但是程序在注释了以下行之后能够完全运行:

def parser_conditional_formatting(self, element):
          None #CHANGED FOR PRODUTIVIDADE.PY
##        cf = ConditionalFormatting.from_tree(element)
##        for rule in cf.rules:
##            if rule.dxfId is not None:
##                rule.dxf = self.differential_styles[rule.dxfId]
##            self.ws.conditional_formatting.add(cf.sqref, rule)
openpyxl\reader\worksheet.py


我知道这不是一个真正的解决方案,但至少程序正在加载工作簿。我将尝试在BitBucket中提交一个问题,以便进行更好的分析。

正如我所说的,第一次用Python提问和begginer编码器。请随时就这些问题提供反馈。G16单元格在您的工作表中是什么样子的?如果允许的话,也许你可以制作一个工作表的打印屏幕。我建议你在openpyxl跟踪器上提交一份错误报告,包括一个示例文件。异常本身非常清楚,但如果没有该文件,则无法真正解决。@elmex80单元格本身是时间格式hh:mm,但错误是指在条件格式中使用的公式
=$G$16-0015
它从单元格G16中的时间减去大约20分钟。@Charlie如果没有其他错误,我将提交错误报告这个问题的答案。早期的补丁解决了类似的问题,也许这只是一个简单的错误。
def parser_conditional_formatting(self, element):
          None #CHANGED FOR PRODUTIVIDADE.PY
##        cf = ConditionalFormatting.from_tree(element)
##        for rule in cf.rules:
##            if rule.dxfId is not None:
##                rule.dxf = self.differential_styles[rule.dxfId]
##            self.ws.conditional_formatting.add(cf.sqref, rule)