openpyxl的一个坑

时间:2025-03-10 09:34:40

这几天一直尝试用Python来做一些Excel的自动化,xlrd,openpyxl,xlwings都尝试了,其中openpyxl有一个很奇葩的问题,即我发现无法使用load_wrokbook打开excel, xlrd和xlwings都可以。系统的提示是:

Traceback (most recent call last):
  File "C:\Users\asus\AppData\Local\Programs\Python\Python37-32\lib\site-packages\openpyxl\descriptors\", line 55, in _convert
    value = expected_type(value)
TypeError: int() argument must be a string, a bytes-like object or a number, not 'NoneType'

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "C:/Users/asus/.PyCharmCE2019.3/config/scratches/", line 7, in <module>
    wb = load_workbook(r'E:\Documnet\工作\惠尔康\07_数据分析\临时文件\惠尔康销售情况日报表.xlsm')
  File "C:\Users\asus\AppData\Local\Programs\Python\Python37-32\lib\site-packages\openpyxl\reader\", line 317, in load_workbook
    ()
  File "C:\Users\asus\AppData\Local\Programs\Python\Python37-32\lib\site-packages\openpyxl\reader\", line 279, in read
    self.read_worksheets()
  File "C:\Users\asus\AppData\Local\Programs\Python\Python37-32\lib\site-packages\openpyxl\reader\", line 254, in read_worksheets
    charts, images = find_images(, )
  File "C:\Users\asus\AppData\Local\Programs\Python\Python37-32\lib\site-packages\openpyxl\reader\", line 39, in find_images
    cs = get_rel(archive, deps, , ChartSpace)
  File "C:\Users\asus\AppData\Local\Programs\Python\Python37-32\lib\site-packages\openpyxl\packaging\", line 168, in get_rel
    obj = cls.from_tree(tree)
  File "C:\Users\asus\AppData\Local\Programs\Python\Python37-32\lib\site-packages\openpyxl\descriptors\", line 87, in from_tree
    obj = desc.expected_type.from_tree(el)
  File "C:\Users\asus\AppData\Local\Programs\Python\Python37-32\lib\site-packages\openpyxl\descriptors\", line 87, in from_tree
    obj = desc.expected_type.from_tree(el)
  File "C:\Users\asus\AppData\Local\Programs\Python\Python37-32\lib\site-packages\openpyxl\chart\", line 140, in from_tree
    self = super(PlotArea, cls).from_tree(node)
  File "C:\Users\asus\AppData\Local\Programs\Python\Python37-32\lib\site-packages\openpyxl\descriptors\", line 87, in from_tree
    obj = desc.expected_type.from_tree(el)
  File "C:\Users\asus\AppData\Local\Programs\Python\Python37-32\lib\site-packages\openpyxl\descriptors\", line 87, in from_tree
    obj = desc.expected_type.from_tree(el)
  File "C:\Users\asus\AppData\Local\Programs\Python\Python37-32\lib\site-packages\openpyxl\descriptors\", line 87, in from_tree
    obj = desc.expected_type.from_tree(el)
  [Previous line repeated 1 more times]
  File "C:\Users\asus\AppData\Local\Programs\Python\Python37-32\lib\site-packages\openpyxl\descriptors\", line 103, in from_tree
    return cls(**attrib)
  File "C:\Users\asus\AppData\Local\Programs\Python\Python37-32\lib\site-packages\openpyxl\drawing\", line 312, in __init__
     = w
  File "C:\Users\asus\AppData\Local\Programs\Python\Python37-32\lib\site-packages\openpyxl\descriptors\", line 67, in __set__
    value = _convert(self.expected_type, value)
  File "C:\Users\asus\AppData\Local\Programs\Python\Python37-32\lib\site-packages\openpyxl\descriptors\", line 57, in _convert
    raise TypeError('expected ' + str(expected_type))
TypeError: expected <class 'int'>

实在是百思不得其解,上网搜了很久也没有解决方案,最后只好从sheet1开始,一个个删除过去进行试错,最后发现居然是其中两个sheet里面有图表导致的问题,把图表删除后就能正常用了。