주식 표준 win32com 접근 방식을 사용하여 Python에서 Excel 2007을 구동하려고합니다. 그러나 새 통합 문서를 만들려고 할 때 모든 것이 배 모양으로 바뀝니다.Python에서 Excel로 새 통합 문서 만들기
Python 2.6.4 (r264:75706, Nov 3 2009, 13:23:17) [MSC v.1500 32 bit (Intel)] on win32
...
>>> import win32com.client
>>> excel = win32com.client.Dispatch("Excel.Application")
>>> wb = excel.Workbooks.Add()
Traceback (most recent call last):
File "<pyshell#3>", line 1, in <module>
wb = excel.Workbooks.Add()
File "C:\Python26\lib\site-packages\win32com\client\dynamic.py", line 467, in __getattr__
if self._olerepr_.mapFuncs.has_key(attr): return self._make_method_(attr)
File "C:\Python26\lib\site-packages\win32com\client\dynamic.py", line 295, in _make_method_
methodCodeList = self._olerepr_.MakeFuncMethod(self._olerepr_.mapFuncs[name], methodName,0)
File "C:\Python26\lib\site-packages\win32com\client\build.py", line 297, in MakeFuncMethod
return self.MakeDispatchFuncMethod(entry, name, bMakeClass)
File "C:\Python26\lib\site-packages\win32com\client\build.py", line 318, in MakeDispatchFuncMethod
s = linePrefix + 'def ' + name + '(self' + BuildCallList(fdesc, names, defNamedOptArg, defNamedNotOptArg, defUnnamedArg, defOutArg) + '):'
File "C:\Python26\lib\site-packages\win32com\client\build.py", line 604, in BuildCallList
argName = MakePublicAttributeName(argName)
File "C:\Python26\lib\site-packages\win32com\client\build.py", line 542, in MakePublicAttributeName
return filter(lambda char: char in valid_identifier_chars, className)
File "C:\Python26\lib\site-packages\win32com\client\build.py", line 542, in <lambda>
return filter(lambda char: char in valid_identifier_chars, className)
UnicodeDecodeError: 'ascii' codec can't decode byte 0x83 in position 52: ordinal not in range(128)
>>>
여기서 잘못된 점이 무엇입니까? 어리석은 짓을했거나 파이썬/win32com/Excel이 어떻게 든 부러 졌나요?
감사합니다. Ryan! 그 마지막 제안으로 머리에 못을 박았습니다. 내 로캘 '('English_Australia ','1252 ')'은 string.letters에 ASCII가 아닌 문자가 있고'className'은 때로는 유니 코드입니다. 따라서 in 연산자는 valid_identifier_chars를 유니 코드로 강제합니다. 위의 오류로 실패합니다. 'className'을 str로 변환하면 win32com 관리자에게 버그가 발생할 수 있습니다. –
로캘이 전체 pywin32 패키지 작성자의 로캘과 동일하다면, 나는이 버그가 이전에 발견되지 않았다는 사실에 약간 놀랐습니다. –