使用Iron Python编写xlsx文件

3

我正在尝试在Iron Python(v2.7.5)中创建一个xlsx文件。
我已经安装了最新版本的openpyxl(v2.2.1),并测试了一个最小化的示例,几乎是从openpyxl文档中直接复制出来的:

from openpyxl import Workbook
wb = Workbook()
wb.save('empty.xlsx')

在CPython中,I的工作正常(创建一个空工作簿),但在Iron Python中,它只会抛出异常。

  File "test_openpyxl.py", line 15, in <module>
  File "C:\Program Files (x86)\IronPython 2.7\lib\site-packages\openpyxl\workbook\workbook.py", line 298, in save
  File "C:\Program Files (x86)\IronPython 2.7\lib\site-packages\openpyxl\writer\excel.py", line 196, in save_workbook
  File "C:\Program Files (x86)\IronPython 2.7\lib\site-packages\openpyxl\writer\excel.py", line 179, in save
  File "C:\Program Files (x86)\IronPython 2.7\lib\site-packages\openpyxl\writer\excel.py", line 67, in write_data
  File "C:\Program Files (x86)\IronPython 2.7\lib\site-packages\openpyxl\workbook\properties.py", line 103, in write_properties
  File "C:\Program Files (x86)\IronPython 2.7\lib\site-packages\openpyxl\utils\datetime.py", line 33, in datetime_to_W3CDTF

类型错误:预期日期时间,得到Object_1$1

我猜这个错误是由于某些意外弹出的.NET对象造成的,但是我被Object_1的事情所困惑,所以无法找到它是什么对象。

我也尝试了旧版本的包,只有在v1.8.0中才能获得一些结果:

  • openpyxl-2.1.0可以正常运行(只有一个弃用警告),但Excel会抱怨创建的文件中存在损坏内容。输入代码
  • openpyxl-2.0.5抛出另一个异常(已经在这里报告
  • openpyxl-1.8.6抛出“ImportError:无法从openpyxl.styles导入PatternFill”
  • openpyxl-1.8.0会打印出一个警告信息(UserWarning:无法导入'xml.etree.cElementree'。回退到'xml.etree.Elementree'),经过一番思考是相当合理的。所以这可能是唯一可以工作的版本。

在我进一步挖掘之前,我想问问社区: 1. 是否有人成功在IronPython下使用openpyxl 2. 是否有其他可以创建适度格式化的xlsx文件的库?


我能够安装1.8.1并且在出现上述警告的情况下使其正常工作,但是无法安装1.8.2。因此,我建议使用1.8.1。 - gbronner
3个回答

3

我认为简短的回答是你不能使用IronPython与openpyxl配合。我们使用描述符进行类型定义,而IronPython似乎无法处理它们。


1
我们已经成功地使用了ClosedXML - 一个相当活跃和受支持的项目 - 来从.NET读取和编写格式化的XLSX数据。我们的主要用例集中在C#上,但偶尔也会从IronPython中使用它。
该项目有NuGet包,建立在Microsoft官方的DocumentFormat.OpenXml SDK之上,同时使用起来显著更容易。
我无法对openpyxl发表评论,因为我没有使用过它,但你找到的错误报告和IronPython中Ctypes的一般情况使得这些技术的组合现在很可能不会奏效。

-1

尝试使用clr模块并引用Microsoft Excel "import clr" clr.AddReferenceByName('Microsoft.Office.Interop.Excel')


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接