类型错误:预期 <class 'openpyxl.styles.fills.Fill'>

时间:2021-07-28 09:12:53

标签: python excel openpyxl

我正在尝试使用 openpyxl 下载并打开由市场生成的 excel 文件(报告)。

import requests
import config
import openpyxl

link = 'https://api.telegram.org/file/bot' + config.TOKEN + '/documents/file_66.xlsx'

def save_open(link):
    
    filename = link.split('/')[-1]
    r = requests.get(link)
    with open(filename, 'wb') as new_file:
        new_file.write(r.content)

    wb = openpyxl.open ('file_66.xlsx')
    ws = wb.active

    cell = ws['B2'].value
    print (cell)

save_open(link)

运行此代码后,我得到了上述内容:

Traceback (most recent call last):
  File "C:\Python 3.9\lib\site-packages\openpyxl\descriptors\base.py", line 55, in _convert
    value = expected_type(value)
TypeError: Fill() takes no arguments

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "C:\Users\Home\Documents\myPython\bot_WB\main.py", line 20, in <module>
    save_open(link)
  File "C:\Users\Home\Documents\myPython\bot_WB\main.py", line 14, in save_open
    wb = openpyxl.open ('file_66.xlsx')
  File "C:\Python 3.9\lib\site-packages\openpyxl\reader\excel.py", line 317, in load_workbook
    reader.read()
  File "C:\Python 3.9\lib\site-packages\openpyxl\reader\excel.py", line 281, in read
    apply_stylesheet(self.archive, self.wb)
  File "C:\Python 3.9\lib\site-packages\openpyxl\styles\stylesheet.py", line 198, in apply_stylesheet
    stylesheet = Stylesheet.from_tree(node)
  File "C:\Python 3.9\lib\site-packages\openpyxl\styles\stylesheet.py", line 103, in from_tree
    return super(Stylesheet, cls).from_tree(node)
  File "C:\Python 3.9\lib\site-packages\openpyxl\descriptors\serialisable.py", line 103, in from_tree
    return cls(**attrib)
  File "C:\Python 3.9\lib\site-packages\openpyxl\styles\stylesheet.py", line 74, in __init__
    self.fills = fills
  File "C:\Python 3.9\lib\site-packages\openpyxl\descriptors\sequence.py", line 26, in __set__
    seq = [_convert(self.expected_type, value) for value in seq]
  File "C:\Python 3.9\lib\site-packages\openpyxl\descriptors\sequence.py", line 26, in <listcomp>
    seq = [_convert(self.expected_type, value) for value in seq]
  File "C:\Python 3.9\lib\site-packages\openpyxl\descriptors\base.py", line 57, in _convert
    raise TypeError('expected ' + str(expected_type))
TypeError: expected <class 'openpyxl.styles.fills.Fill'>
[Finished in 1.6s]

如果您运行文件属性/详细信息,您可以看到该文件是由“Go Exelize”(作者:xuri)生成的。要运行此文件,您需要将代码分成两部分。第一:下载文件。然后你需要用 MS Excel 手动打开它,保存文件并关闭它(在这个“Go Excelize”切换到“Microsoft Excel”之后)。只有在此之后,您才能正确运行代码的第二部分,而不会出现错误。谁能帮我解决这个问题?

0 个答案:

没有答案
相关问题