在ironpython中使用openpyxl保存工作簿

2024-03-28 17:22:25 发布

您现在位置:Python中文网/ 问答频道 /正文

我在使用openpyxl使用嵌入在.net4.0应用程序中的IronPython运行时引擎保存excel文件时遇到了一个问题,但是在IronPython解释器中运行相同的代码时,我没有收到任何错误,并且保存成功。从字面上看,代码就这么简单:

import sys
sys.path.append(r'c:\python27\lib\site-packages')
import openpyxl
wb=openpyxl.Workbook()
wb.save(r'c:\save\to\somewhere.xlsx')

在.NET应用程序中运行此代码时,我得到以下堆栈跟踪:

^{pr2}$

我用以下代码初始化python引擎:

_pythonEngine = Python.CreateEngine(engineDict);
_memStream = new System.IO.MemoryStream();
_streamWriter = new util.EventRaisingStreamWriter(_memStream);               
_pythonEngine.Runtime.IO.SetErrorOutput(_memStream, _streamWriter);
_pythonEngine.Runtime.IO.SetOutput(_memStream, _streamWriter);

_streamwriter是一个包装器,用于将事件的输出发送到文本框。在

为什么我可以在没有翻译问题的情况下保存,而不是使用引擎?我尝试不重定向输出流,但发生了相同的错误。在

  • IronPython版本=2.7.0.40(文件版本2.7.4.1000)
  • openpyxl版本=1.8.5
  • python版本=2.7.6

谢谢。在


Tags: 文件代码io引擎import版本应用程序错误
1条回答
网友
1楼 · 发布于 2024-03-28 17:22:25

如果您使用的是CPython stdlib的一部分:

File "C:\Python27\Lib\xml\sax\saxutils.py", line 165, in startElementNS
    def startElementNS(self, name, qname, attrs):
  File "C:\Python27\Lib\xml\sax\saxutils.py", line 102, in write
    def write(self, s):
TypeError: expected long, got NoneType

IronPython的stdlib略有不同。当在解释器下运行时,它可能会获取ironpythonstdlib,但在您的程序中,它会获取CPython库。在

嵌入时,可以使用engine.SetSearchPaths来控制搜索路径。在

相关问题 更多 >