0

我对编程比较陌生,所以如果我没有提供足够的信息,我很抱歉。操作系统:Mac OS X 10.10.3。从 Excel (2011, 14.4.5) 我调用 python xlwings (0.3.5)。

目标是打印带有丹麦字符的字符串。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('å')

输出(不幸的是,我没有发布图片的要点):

错误

第 7 行,在 print_text print('\xe5')

UnicodeEncodeError:“ascii”编解码器无法在位置 0 编码字符“\xe5”:序数不在范围内(128)

我也想知道为什么对话框显示'错误',当没有错误时(例如打印('a')?

4

1 回答 1

0

要在 Python 中使用 unicode,您有两种可能性:要么使用 Python 3,通常情况下才能正常工作,要么u在 Python 2 中的字符串前面添加 a 以使其成为 unicode:,u'å'另请参阅此处的相关讨论。

至于另一个问题:没错,这并不理想:Mac 上的(错误)弹出窗口当前显示任何进入标准输出的内容,其中包括打印消息。这些发行说明的最后一个项目符号显示了如何完全静音弹出窗口(作为当前的解决方法)。

更新:这是 Python 3 的带有 unicode 的示例脚本(从 Excel 调用):

from xlwings import Workbook, Range
def print_text():
    wb = Workbook.caller()
    Range('A1').value = 'å'
于 2015-04-26T22:10:27.433 回答