代码之家  ›  专栏  ›  技术社区  ›  Stewie Griffin

尝试从openpyxl使用模块load\u工作簿时出错

  •  1
  • Stewie Griffin  · 技术社区  · 8 年前

    openpyxl .我的代码是:

    import os
    from openpyxl import load_workbook
    
    def edit_workbook():
        path = r'C:\123 ABC\Excel documents'
        filename = 'filename.xlsx'
    
        os.path.join(path, filename)
        workbook = load_workbook(os.path.join(path, filename))
    
        ## Error is on the line above.
    

    我收到的完整错误消息是:

    Traceback (most recent call last):
    
      File "<ipython-input-12-22dfdfc4e5e1>", line 1, in <module>
        workbook = load_workbook(os.path.join(path, filename))
    
      File "C:\Users\Stewie\Anaconda3\lib\site-packages\openpyxl\reader\excel.py", line 214, in load_workbook
        apply_stylesheet(archive, wb) # bind styles to workbook
    
      File "C:\Users\Stewie\Anaconda3\lib\site-packages\openpyxl\styles\stylesheet.py", line 176, in apply_stylesheet
        stylesheet = Stylesheet.from_tree(node)
    
      File "C:\Users\Stewie\Anaconda3\lib\site-packages\openpyxl\styles\stylesheet.py", line 99, in from_tree
        return super(Stylesheet, cls).from_tree(node)
    
      File "C:\Users\Stewie\Anaconda3\lib\site-packages\openpyxl\descriptors\serialisable.py", line 79, in from_tree
        obj = desc.expected_type.from_tree(el)
    
      File "C:\Users\Stewie\Anaconda3\lib\site-packages\openpyxl\descriptors\serialisable.py", line 79, in from_tree
        obj = desc.expected_type.from_tree(el)
    
      File "C:\Users\Stewie\Anaconda3\lib\site-packages\openpyxl\descriptors\serialisable.py", line 79, in from_tree
        obj = desc.expected_type.from_tree(el)
    
      File "C:\Users\Stewie\Anaconda3\lib\site-packages\openpyxl\descriptors\serialisable.py", line 92, in from_tree
        return cls(**attrib)
    
      File "C:\Users\Stewie\Anaconda3\lib\site-packages\openpyxl\styles\table.py", line 37, in __init__
        self.dxfId = dxfId
    
      File "C:\Users\Stewie\Anaconda3\lib\site-packages\openpyxl\descriptors\base.py", line 69, in __set__
        value = _convert(self.expected_type, value)
    
      File "C:\Users\Stewie\Anaconda3\lib\site-packages\openpyxl\descriptors\base.py", line 59, in _convert
        raise TypeError('expected ' + str(expected_type))
    
    TypeError: expected <class 'int'>
    

    有人知道这是什么吗?

    1 回复  |  直到 8 年前
        1
  •  1
  •   Marc Meketon    5 年前

    我收到了同样的错误。在我的例子中,Excel工作簿没有图表、过滤器、公式和VBA。仅限数据。此工作簿由某些第三方软件生成。

    结果表明工作簿已损坏。我在做了一些很小的修改后试图保存它时发现了这一点。一旦我解决了损坏问题(通过让Excel按要求将其保存到其他名称),openpyxl错误就消失了。