【问题标题】:Python Error: row index not an int in range(65536)Python 错误:行索引不是范围内的 int (65536)
【发布时间】:2013-07-11 14:06:52
【问题描述】:

我在使用 xlwt 写入 excel 文件时收到此消息:

行索引(u'RN')不是范围内的 int(65536)

抛出错误的行来自这里:

sheet.write(x,fieldKey, row.OBJECTID)

x 是我设置的用于设置行值的计数器,fieldKey 是另一个用于设置列值的计数器。

我不知道为什么我会收到此消息,因为值 (u'RN') 是一个字符串值,但它告诉我它不是范围内的 int (65536)。我相信范围(65536)是excel表的极限。同样,我只写了 18 条记录,所以我不明白为什么会出现这个错误。有人可以帮忙吗?

谢谢, 迈克

【问题讨论】:

  • 正如你所说的值是一个 string rn 这是 不是一个 int - 没关系范围部分......
  • 为什么将u'RN' 作为列索引/坐标传递?你希望它做什么?
  • 啊……我已经为此工作了好几个小时。我刚刚发现我在另一个实例中将 x 设置为深埋在我的脚本中的变量。实际上,我之前尝试过寻找它,但它现在才击中我。乔恩,你的帖子让我又看了一遍。谢谢你。

标签: python int


【解决方案1】:

这是因为您不能写入超过 65536 行的 excel。 (您现在可以采用 xlsx 格式)。我有同样的问题,试试 .to_csv()

【讨论】:

    【解决方案2】:

    你得到的错误是因为x(行索引)不是一个数字,而是一个字符串。检查您传递给sheet.write 方法的值;前两个必须是数字(在拨打电话之前尝试打印它们)。

    【讨论】:

    • 好吧,也许不是清楚地,但如果你有一个名为x 的计数器和一个名为fieldKey 的键,那么后者将持有一个字符串u'RN'。但你是对的,我的假设可能是错误的。
    • 谢谢大家。我已经通过我将 x 作为数字传递,直到它被我设置的另一个 x 变量覆盖。感谢您的所有帮助!
    【解决方案3】:

    根据this SO post,sheet.write 的参数应该是 ycoord,xcoord,value

    所以它应该类似于 sheet.write(0,0,answer1)

    根据回复编辑。

    【讨论】:

    • 如果您将它们称为 row 和 col 而不是 y 和 x,则更容易记住。然后顺序看起来很自然,而不是倒退。
    【解决方案4】:

    你可以在 row.py 里面更改 def init(self, rowx, parent_sheet) 的限制,我们把它设为 x2 例如:

    if not (isinstance(rowx, int) and 0 <= rowx <= 131071):
    

    改成

    if not (isinstance(rowx, int) and 0 <= rowx <= 65536):
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2016-04-17
      • 2015-02-13
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-05-12
      • 1970-01-01
      相关资源
      最近更新 更多