操作系统Windows 10专业版
xlwings、Excel和Python的版本(0.9.0、Office 365、Python 3.8.2)
我是通过VBA使用xlwing的新手。我从VBA和Python上的教程网页中运行了确切的语法,但它给出了如下错误:
File "<string>", line 1
import sys, os; sys.path[0:0]=os.path.normcase(os.path.expandvars(r'C:\Users\User\Trial2;C:\Users\User\Trial2\Trial2.zip;C:\Users\User\Anaconda3\')).split(';'); import Trial2;Trial2.main()
SyntaxError: invalid syntax我对VBA使用了原始语法,对python使用的语法是这样的:
import xlwings as xw
#@xw.sub # only required if you want to import it or run it via UDF Server
def main():
wb = xw.Book.caller()
wb.sheets[0].range("A1").value = "Hello xlwings!"
#@xw.func
def hello(name):
return "hello {0}".format(name)
if __name__ == "__main__":
xw.Book("Trial2.xlsm").set_mock_caller()
main()我几乎找不到解决这个问题的任何线索,所以我希望有人能给我一个解决方案
发布于 2020-05-18 13:54:38
这是python的字符串文字中的一个怪异现象。即使使用原始字符串,反斜杠也会转义引号字符,因此r"ends in quote\""是有效的。这也意味着原始字符串不能以单个反斜杠结尾。r"ends in slash\"是一个语法错误。如果需要以反斜杠结束字符串,则不能使用raw。"ends in slash\\"很好。
我不确定失败的字符串来自何处,但您需要将其更改为
import sys, os; sys.path[0:0]=os.path.normcase(os.path.expandvars('C:\\Users\\User\\Trial2;C:\\Users\\User\\Trial2\\Trial2.zip;C:\\Users\\User\\Anaconda3\\')).split(';'); import Trial2;Trial2.main()即使在原始文字中,引号也可以用反斜杠转义,但反斜杠仍保留在结果中;例如,r"\“是由两个字符组成的有效字符串文字:反斜杠和双引号;r”\“不是有效的字符串文字(即使原始字符串也不能以奇数个反斜杠结尾)。具体而言,原始文字不能以单个反斜杠结尾(因为反斜杠将转义后面的引号字符)。
发布于 2021-05-14 22:58:34
我意识到这是在最初的问题之后很长一段时间,但我也有同样的问题,在任何地方都找不到答案。在尝试之后(比我愿意承认的要长得多),我发现我的问题是我的.xlsm/.py文件名包含一个空格。在没有其他更改的情况下,当我用下划线替换空格时,一切都正常。
https://stackoverflow.com/questions/61862083
复制相似问题