如何正确运行Kivy和XLRD模块



我正在尝试使用 xlrd 模块在 Kivy 中制作一个非常简单的应用程序。我有一个包含一些数据的 excel 电子表格,我想将单元格 (2,1) 显示为标签。这是我到目前为止的代码:

import kivy
kivy.require('1.9.1')
import xlrd
from kivy.app import App
from kivy.uix.label import Label

class MyApp(App):
    workbook = xlrd.open_workbook('Actuarial program for BAM.xlsx')
    sheet = workbook.sheet_by_index(0)
    def build(self):
        return Label(text='sheet.cell_value(2,1)')

if __name__ == '__main__':
    MyApp().run()

首先,我知道标签只会给我文字文本sheet.cell_value(2,1)。我的问题在于工作簿和工作表变量。如果我尝试运行该程序,则没有任何反应。但是,如果我注释掉这两行("工作簿="和"工作表="),那么程序将运行,从Kivy打开一个窗口,文本为sheet.cell_value(2,1)。格式化代码的方式有问题吗?

此外,Excel 文件与.py程序位于同一目录中。

Label(text='sheet.cell_value(2,1)')

字面上显示sheet.cell_value(2,1)因为它被引用了。您必须取消引号,并且由于sheet是类成员,因此必须为其添加前缀selfMyApp。例如,我会使用 self 前缀:

class MyApp(App):
    workbook = xlrd.open_workbook('Actuarial program for BAM.xlsx')
    sheet = workbook.sheet_by_index(0)
    def build(self):
        return  Label(text=self.sheet.cell_value(2,1))

如果xlsx文件与程序位于同一目录中,我建议这样做(并会捕获异常并显示它们):

    # find out where is the script/executable installed
    program_dir = os.path.dirname(sys.executable if getattr( sys, 'frozen', False ) else __file__)
    try:
        # open the file from the same directory so script works from any cwd
        workbook = xlrd.open_workbook(os.path.join(program_dir,'Actuarial program for BAM.xlsx'))
    except Exception as e:
          print("Exception occurred: {}".format(str(e)))

最新更新