【问题标题】:TypeError: Value must be a list, tuple, range or generator, or a dictTypeError:值必须是列表、元组、范围或生成器,或者是字典
【发布时间】:2015-06-16 19:03:50
【问题描述】:

我创建了一个脚本来通过正则表达式提取 XML 值,然后附加到 Excel 工作表。然后我添加了一个元素树方法来通过标签名称获取一个值。我还想将该值附加到同一个 XLSX 表中。

我收到此错误:

Traceback (most recent call last):
  File "C:\Path\To\Desktop\excels.py", line 23, in <module>
    ws.append(agreement)
  File "C:\Python34\lib\site-packages\openpyxl\worksheet\worksheet.py", line 763, in append
    self._invalid_row(iterable)
  File "C:\Python34\lib\site-packages\openpyxl\worksheet\worksheet.py", line 768, in _invalid_row
    type(iterable))
TypeError: Value must be a list, tuple, range or generator, or a dict. Supplied value is <class 'str'>

这是我找到并正在测试的示例 elementTree 代码。

from openpyxl import Workbook
import xml.etree.ElementTree as ET

xmlfile = 'test.xml'
element_tree = ET.parse(xmlfile)
root = element_tree.getroot()
agreement = root.find(".//tag").text
#variable = int(agreement)

print (agreement)


wb = Workbook()
kevin = ["1", "2", "3"]

# grab the active worksheet
ws = wb.active

# Data can be assigned directly to cells
ws['A1'] = 42

# Rows can also be appended
ws.append(agreement)
ws.append(kevin)


# Save the file
wb.save("sample.xlsx")

【问题讨论】:

  • 请在您的帖子中包含完整的错误消息和完整的堆栈跟踪。

标签: python xml excel typeerror openpyxl


【解决方案1】:

WorkSheet 实例上的append() 函数接收一个可迭代对象作为参数,而您正在传递一个字符串(agreement 变量)。

相反,您的意思是:

ws.append([42, agreement])

或:

ws.append([agreement])

【讨论】:

  • 做到了!谢谢!
  • 那么现在说我想在 XML 文件的文件夹上运行它?
  • @Kevin 让我们结束这个话题并接受提供的答案。如果您有其他问题,请考虑创建一个单独的问题。谢谢。
猜你喜欢
  • 2021-11-14
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2023-02-15
  • 2020-03-08
  • 1970-01-01
  • 2021-12-21
相关资源
最近更新 更多