【问题标题】:Using XLRD in Ironpython在 Ironpython 中使用 XLRD
【发布时间】:2020-07-24 20:25:21
【问题描述】:

我正在尝试在 IronPython 2.7 中使用 XLRD 库

在打开 .xls 文件(2003 格式)的最基本操作时,我收到以下错误,我不知道如何解决它:

  workbook = xlrd.open_workbook(xlsfile)

  File "C:\Program Files (x86)\IronPython 2.7\lib\site-packages\xlrd\__init__.py", line    426, in open_workbook
  TypeError: sequence item 0: expected bytes or byte array, str found

有什么想法吗?如果可能,我想使用 xlrd,但似乎可能存在一些兼容性问题。使用 Python 2.7 解释器时,文件打开没问题..

【问题讨论】:

  • xlsfile 变量中有什么?
  • 文件名的完整路径:'c:\\data\\data.xls'

标签: excel ironpython xlrd


【解决方案1】:

我在 xlrd 0.9.2 中为此奋斗了一段时间。 bytesbytearraystr 甚至手动读取文件并将其作为 file_contents 传递都不起作用。

最后,我将 xlrd 降级到 0.8.0 版,并且……它正在工作。 :)

【讨论】:

  • 用 XLSX 和 XLS (2003) 都尝试了 xlrd 0.9.3 并且问题仍然存在 - 即使通过手动更正代码,它仍然在其他地方继续给出错误“如预期的 str,得到字节”代码 - 对我来说降级到 0.8 并没有帮助 - 似乎与 IronPython 明显不兼容
  • 对于那些寻求替代方案的人 - 使用旧的 Interop(因为 IronPython 有这个优势)对我来说不需要任何额外的 python 代码(当然也可能有缺点)ironpython.info/index.php?title=Interacting_with_Excel
【解决方案2】:

无论出于何种原因,open_workbook 似乎要求文件名以字节为单位,而不是字符串。试试:

workbook = xlrd.open_workbook(bytes(xlsfile))

这是您可能经常遇到的一个问题:IronPython 的字符串默认是 Unicode(如 Python 3),而不是像 Python 2 那样的字节字符串。

【讨论】:

  • 谢谢 - 当我尝试得到以下错误时,这让我相信问题出在其他地方。奇怪的是,xlrd 主页说它是“unicode 感知”并且它与 Python 3 兼容 .. File "C:\Program Files (x86)\IronPython 2.7\lib\site-packages\xlrd_init_.py",第 394 行,在 open_workbook 类型错误中:预期 str,得到字节
  • 即使 xlrd 支持 Python 3,它也可能不会为 IronPython 激活该路径。但是,它确实应该使任何可能需要的更改变得更容易。
【解决方案3】:

我正在尝试在 CODESYS 中将 xlrd 添加到 ironpython 2.7 并遇到同样的问题。但是,在尝试了 0.8.0 版本后,它工作正常。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-03-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-04-19
    相关资源
    最近更新 更多