2015-04-26 6 views
0

Я относительно новичок в программировании, поэтому извините, если я не предоставил достаточную информацию. ОС: Mac OS X 10.10.3. Из Excel (2011, 14.4.5) Я вызываю python xlwings (0.3.5).Unicode error xlwings

Целью является печать строки с датским символом. Код VBA:

Sub PrintText() 
RunPython ("import test_file; test_file.print_text()") 
End Sub 

Python код:

# -*- coding: utf-8 -*- 
from xlwings import Workbook, Sheet, Range, Chart 


def print_text(): 
    wb = Workbook.caller() # Creates a connection with a new workbook 
    print('å') 

выход (к сожалению, у меня нет точки для размещения картины):

Error

line 7, in print_text print('\xe5')

UnicodeEncodeError: 'ascii' codec can't encode character '\xe5' in position 0: ordinal not in range(128)

Я также задаюсь вопросом, почему диалоговое окно показывает «Ошибка», когда нет ошибки (например, print ('a')?

ответ

0

Для работы с unicode в P ython, у вас есть две возможности: либо использовать Python 3, где обычно обычно работают, либо добавлять u перед нашей строкой в ​​Python 2, чтобы сделать их unicode: u'å', см. также соответствующее обсуждение here.

Что касается другого вопроса: правда, это не идеально: всплывающее окно (ошибка) на Mac в настоящее время показывает все, что выходит на стандартный вывод, который включает в себя печатные сообщения. Последняя пуля этих release notes показывает, как полностью отключить всплывающее окно (в качестве текущего обходного пути).

Update: Вот пример сценария с Юникода для Python 3 (будет вызываться из Excel):

from xlwings import Workbook, Range 
def print_text(): 
    wb = Workbook.caller() 
    Range('A1').value = 'å' 
+0

Спасибо за быстрый ответ. Я запускаю Python 3.4.2 (подтвержден с помощью 'print (sys.version)'. Как упоминалось в ссылке, я также попытался использовать unicode 'print (str (" å ", 'utf-8'))', но дает мне ошибку: TypeError: decoding str не поддерживается. – DauleDK

+0

Я обновил свой ответ с помощью примера - я думаю, что вы смотрите слишком далеко: при работе с Excel вам не нужно действительно «печатать» - вы бы Работа с ячейками напрямую. Делает смысл? –

+0

Я понимаю сейчас - спасибо за отличный ответ и отличный инструмент! – DauleDK

 Смежные вопросы

  • Нет связанных вопросов^_^