我正在尝试使用Iron Python(v2.7.5)创建一个xlsx文件 我安装了最新版本的openpyxl(v2.2.1)并测试了一个简约的例子,几乎完全取自openpyxl文档:
from openpyxl import Workbook
wb = Workbook()
wb.save('empty.xlsx')
我在CPython中正如预期的那样工作(创建一个空的工作簿),但在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
TypeError:预期日期时间,得到Object_1 $ 1
我猜这个错误是由一些.NET对象意外弹出引起的,但我对Object_1
的东西感到困惑,所以无法找到它的对象。
我也尝试过旧版本的软件包,只有v1.8.0才能获得一些结果:
enter code here
UserWarning: Unable to import 'xml.etree.cElementree'. Falling back on 'xml.etree.Elementree')
,经过一番考虑后非常合理。所以这可能是唯一有效的版本。在我进一步挖掘之前,我想问社区:
1.有没有人设法在IronPyth下使用openpyxl
2.是否有其他可行的库
创建格式适中的xlsx
文件?
答案 0 :(得分:2)
我认为简短的回答是你不能将openpyxl与IronPython一起使用。我们使用描述符进行输入,而IronPython似乎很难与它们斗争。
答案 1 :(得分:1)
我们已成功使用ClosedXML - 一个相当活跃且受支持的项目 - 用于从.NET读取和编写格式化的XLSX数据。我们的主要用例以C#为中心,但有时我们也使用过IronPython。
该项目有NuGet packages,并以Microsoft官方的DocumentFormat.OpenXml SDK为基础,同时更易于使用。
我无法对openpyxl发表评论,因为我没有使用它,但你发现的错误报告以及IronPython中Ctypes的一般情况使得这种技术组合很可能无法解决(现在)。
答案 2 :(得分:-1)
尝试使用clr模块并参考Microsoft Excel “导入clr” clr.AddReferenceByName('Microsoft.Office.Interop.Excel')