xlwings调用一个python函数,该函数应创建一个文件,但不会创建任何文件

时间:2015-08-05 18:29:01

标签: python excel xlwings

def create_file():
    file_writer= open('testFile.txt','w')
    file_writer.write('TESTING...;\n')
    file_writer.flush()
    file_writer.close()

def my_macro():
    wb = Workbook.caller()  # Creates a reference to the calling Excel file
    Range('Sheet1', 'C3').value = random.randint(0,10)
    updateValue = Range('Sheet1', 'C3').value
    print("updatedValue=" , updateValue);
    create_file()

if __name__ == '__main__':
    path = os.path.abspath(os.path.join(os.path.dirname(__file__), 'FirstExcel.xlsm'))
    Workbook.set_mock_caller(path)
    my_macro()

当我在Eclipse中运行上述代码时,它会创建一个文件并更新excel电子表格。但是,当我从excel运行它时,它会更新电子表格,但不会创建文件。

1 个答案:

答案 0 :(得分:1)

问题是Excel当前在不同的工作目录中启动Python解释器,而不是从Python调用文件时。这是GitHub上的一个未解决的问题,请参阅here

与此同时,只需在openwrite中为所有文件使用绝对/完整路径。您还应该能够使用os.path.abspath(os.path.join(os.path.dirname(__file__), 'testFile.txt'))

之类的内容