0
我使用xlwings 0.6.4。如果從蟒提示符下執行這些行工作如記錄:使用範圍從@xlfunc錯誤
from xlwings import xlfunc, Range, Workbook
wb = Workbook.active()
Range('B1').value = 'set'
但是,如果我把代碼放入@xlfunc宏,加載(Excel2016在Windows7)的UDF在Excel和執行「= TEST_SET()」,我獲得一個錯誤。
from xlwings import xlfunc, Range, Workbook
@xlfunc
def test_set():
wb = Workbook.active()
Range('B1').value = 'set'
return 'set ok!'
和錯誤是:
pythoncom error: Python error invoking COM method.
Traceback (most recent call last):
File "C:\Python27\lib\site-packages\win32com\server\policy.py", line 277, in _
Invoke_
return self._invoke_(dispid, lcid, wFlags, args)
File "C:\Python27\lib\site-packages\win32com\server\policy.py", line 282, in _
invoke_
return S_OK, -1, self._invokeex_(dispid, lcid, wFlags, args, None, None)
File "C:\Python27\lib\site-packages\win32com\server\policy.py", line 585, in _
invokeex_
return func(*args)
File "C:\Python27\lib\site-packages\xlwings\server.py", line 179, in Call
return ToVariant(obj(*pargs, **kwargs))
File "c:\users\az\projects\test_set\test_set.py", line 6, in test_set
Range('B1').value = 'set'
File "C:\Python27\lib\site-packages\xlwings\main.py", line 901, in value
self.row1, self.col1, row2, col2), data)
File "C:\Python27\lib\site-packages\xlwings\_xlwindows.py", line 273, in set_v
alue
xl_range.Value = data
File "C:\Python27\lib\site-packages\win32com\client\dynamic.py", line 565, in
__setattr__
self._oleobj_.Invoke(entry.dispid, 0, invoke_type, 0, value)
com_error: (-2147352567, 'Exception occurred.', (0, None, None, None, 0, -214682
7284), None)
請幫助!我做錯了什麼?
謝謝!這就說得通了。 (在文檔中有解釋嗎?我錯過了嗎?)這意味着UDF比宏更強大。好。 – Sasha
但是這段代碼沒有工作(它只是設置一個單元格爲「1-Jan-00」):'@xlfunc def test_set(): wb = Workbook.active() return [[1,2], [3,4],[5,6]] – Sasha
這是Excel UDF的標準行爲,但我會確保文檔改進該主題。關於你的*沒有工作*評論:將單元格重新格式化爲'General'而不是日期,並且您需要在Excel側面使用數組公式,參見[這裏](http://docs.xlwings.org/udfs.html #陣列式-I-而不-numpy的) –