将数据从 Kivy Python 更新到 Excel
Posted
技术标签:
【中文标题】将数据从 Kivy Python 更新到 Excel【英文标题】:Updating Data from Kivy Python to Excel 【发布时间】:2021-06-15 11:51:48 【问题描述】:我在更新要插入 Excel 的数据时遇到问题。起初,我创建了数据,它成功地工作而没有错误。在我想从 Kivy 插入新数据后,它不起作用。错误表示该过程被 PC 拒绝。我有观看教程,看来我的问题仍未解决。这是我的 VSCode 代码:
Window.size = (500, 500)
outWorkbook = xlsxwriter.Workbook("staff.xlsx") outSheet = outWorkbook.add_worksheet()
类菜单(屏幕): 通过
类输入(屏幕):
input1 = ObjectProperty(None)
input2 = ObjectProperty(None)
input3 = ObjectProperty(None)
input4 = ObjectProperty(None)
input5 = ObjectProperty(None)
input6 = ObjectProperty(None)
def clear(self):
self.ids.inherent_input.text = ''
self.ids.inherent2_input.text = ''
self.ids.inherent3_input.text = ''
self.ids.inherent4_input.text = ''
self.ids.inherent5_input.text = ''
self.ids.inherent6_input.text = ''
def btn(self):
self.L = ()
print("Name: " + self.input1.text,
"Activity/Programme: " + self.input2.text,
"Date: " + self.input3.text,
"Place: " + self.input4.text,
"Time from: " + self.input5.text,
"Time to: " + self.input6.text)
staff = ("Name": [str(self.input1.text)], "Program/Activity": [str(self.input2.text)], "Place" : [str(self.input3.text)], "Date": [str(self.input4.text)], "Time From" : [str(self.input5.text)], "Time To" : [str(self.input6.text)])
self.L = pd.DataFrame(staff)
self.input1.text = ''
self.input2.text = ''
self.input3.text = ''
self.input4.text = ''
self.input5.text = ''
self.input6.text = ''
print(self.L)
with pd.ExcelWriter('staff.xlsx') as writer:
self.L.to_excel(writer)
类信息(屏幕): 通过
类 WindowManager(ScreenManager): 通过
kv = Builder.load_file('window.kv')
类 MyLayout(Widget):
类 WindowApp(App): 定义构建(自我): 返回kv
如果 name == 'main': WindowApp().run()
这是我的 kv 文件:
WindowManager:
Menu:
Enter:
Info:
:
名称:“主菜单”
BoxLayout:
orientation: "vertical"
size: root.width, root.height
padding: 10
spacing: 15
Button:
id: enter
text: "Enter"
on_release: app.root.current = "enter"
Button:
id: info
text: "Information"
on_release: app.root.current = "info"
Button:
id: exit
text: "Exit"
on_press: quit()
: 名称:“输入”
input1: inherent_input
input2: inherent2_input
input3: inherent3_input
input4: inherent4_input
input5: inherent5_input
input6: inherent6_input
BoxLayout:
orientation: "vertical"
size: root.width, root.height
padding:10
spacing:10
BoxLayout:
spacing: 10
Label:
text: "Name"
font_size: 20
TextInput:
id: inherent_input
multiline: False
BoxLayout:
spacing: 10
Label:
text: "Activity/Programme"
font_size: 20
TextInput:
id: inherent2_input
multiline: False
BoxLayout:
spacing: 10
Label:
text: "Place"
font_size: 20
TextInput:
id: inherent3_input
multiline: False
BoxLayout:
Label:
text: "Date"
font_size: 20
TextInput:
id: inherent4_input
multiline: False
BoxLayout:
padding: 10
spacing: 10
Label:
text: "Time from"
font_size: 20
TextInput:
id: inherent5_input
multiline: False
Label:
text: "to"
font_size: 20
TextInput:
id: inherent6_input
multiline: False
BoxLayout:
padding: 15
spacing: 15
Button:
id: clear
text: "Clear"
font_size: 12
on_press: root.clear()
Button:
id: back
text: "Back to Menu"
font_size: 12
on_release: app.root.current = "MainMenu"
Button:
id: submit
text: "Submit"
font_size: 12
on_press: root.btn()
: 名称:“信息”
BoxLayout:
orientation: 'vertical'
padding: 15
spacing: 15
Label:
id: information
text: "This is just a test, an Alpha version of Prototype"
font_size: 20
bold: True
italic: False
outline_color: (0,0,0)
Button:
id: returnBack
text: "Return"
on_release: app.root.current = "MainMenu"
任何帮助将不胜感激。
【问题讨论】:
您收到的错误是什么? 这实际上不是编程错误,更像是用户管理错误,因为我没有更新数据,而是使用相同的名称保存数据。 错误:xlsxwriter.exceptions.FileCreateError:[Errno 13] 权限被拒绝:'文件路径' 【参考方案1】:您遇到的错误可能意味着多种情况。
您是否要打开目录?
如果是这样,请不要这样做。它很可能会导致您提到的错误。
您尝试打开的文件是否在其他任何地方?
您可能需要关闭它,python 才能打开它。在尝试删除资源管理器中的文件时,您可能已经经历过这种情况,该文件在其他地方打开。 Windows 不会让你这样做。在尝试访问之前检查有问题的文件是否已打开。
【讨论】:
我打开文件没有问题,当我尝试用我想要实现的新数据更新 excel 时出现问题。当我使用 append 方法时,它也显示了相同的结果。 哦,好吧,现在我明白了,我必须关闭文件,然后再次运行系统才能更新。 我遇到了其他问题,如何在不覆盖以前数据的情况下更新 excel 表?有什么方法可以实现吗? 因此,您不想编辑原件,而是保存原件的编辑副本。我理解正确吗? 是的,就是这样,我想将数据保存到现有的excel文件中,而不覆盖之前保存的数据。以上是关于将数据从 Kivy Python 更新到 Excel的主要内容,如果未能解决你的问题,请参考以下文章
第一个 Python/Kivy/KivyMD 应用程序。无法将文本字段中的数据保存到变量 + 数据绑定到 MDList