AbstractFrame 2022-10-21 15:09 采纳率: 0%
浏览 7

关于#pandas#的问题,如何解决?

问题遇到的现象和发生背景

想制作一个excel表格小工具,但是在进行删除时出现了错误

用代码块功能插入代码,请勿粘贴截图
import tkinter
from tkinter import *
import os
import sys
import time
from tkinter import messagebox
import pymongo
import self
import xlrd
import xlwt
import pandas as pd
from openpyxl.reader.excel import load_workbook
from xlrd import book


#app = Tk()



class A(object):
  def __init__(self,master):
      master.geometry("600x600")

      master.title("文件")

      heading = Label(text="Excel工作表", fg="black", bg="yellow", width="500", height="3", font="10")

      heading.pack()

      ID_text = Label(master,text="ID")
      class_text = Label(master,text="班级")
      names_text = Label(master,text="姓名")
      score_text = Label(master,text='成绩')
      delete_text = Label(master,text='删除')

      ID_text.place(x=15, y=70)
      class_text.place(x=15, y=140)
      names_text.place(x=15, y=210)
      score_text.place(x=15, y=280)
      delete_text.place(x=15, y=350)

      self.ID = StringVar()
      self.classing = StringVar()
      self.thename = StringVar()
      self.score = StringVar()
      self.delet = StringVar()

      self.ID_entry = Entry(master,textvariable=self.ID, width="30")
      classing_entry = Entry(master,textvariable=self.classing, width="30")
      thename_entry = Entry(master,textvariable=self.thename, width="30")
      score_entry = Entry(master,textvariable=self.score, width="30")
      delete_entry = Entry(master,textvariable=self.delet, width="30")

      self.ID_entry.place(x=15, y=100)
      classing_entry.place(x=15, y=180)
      thename_entry.place(x=15, y=240)
      score_entry.place(x=15, y=300)
      delete_entry.place(x=15, y=370)

      button = Button(master, text="创建", command=self.create_excel, width="30", height="2", bg="grey")

      button.place(x=15, y=420)

      button1 = Button(master, text="删除", command=self.dellete_excel, width="30", height="2", bg="grey")
      button1.place(x=300, y=420)





  def create_excel(self):



    self.ID_info = self.ID.get()
    self.class_info = self.classing.get()
    self.thename_info = self.thename.get()
    self.score_info = self.score.get()

    global name

    localTime = time.strftime("%Y-%m-%d-%H", time.localtime())

    self.name = localTime + '.xls'








    if os.path.isfile(self.name):
        tkinter.messagebox.showinfo("提示", "文件已经被创建")

        # tkinter.messagebox.showinfo("提示", "添加成功!")
        y = os.system(self.name)

        print(y)

    if not os.path.exists(self.name):

        df = {"ID": [self.ID_info],
              "班级": [self.class_info],
              "姓名": [self.thename_info],
              "成绩": [self.score_info]}

        df = pd.DataFrame(df)
        df.to_excel(self.name, sheet_name="Sheet1", index=False, engine="openpyxl")
        print("Done!")

        # os.system(r"touch{}".format(name))
        #file = open(name, "a")
        #file.write("ID" + "\t" + "班级" + "\t" + "姓名" + "\t" + "成绩" + "\n")
        #file.write("0xx" + "\t" + "xxxx" + "\t" + "xxx" + "\t" + "xxx" + "\n")

        #file.write(ID_info)

        #file.write("\t")

        #file.write(class_info)

        #file.write("\t")

        #file.write(thename_info)

        #file.write("\t")

        #file.write(score_info)

        #file.write("\n")

        tkinter.messagebox.showinfo("提示", "创建成功!")
    else:

        #with pd.ExcelWriter(name,mode="a",engine="openpyxl") as writer:

        df1 = pd.read_excel(self.name)
        # df1 = pd.DataFrame(columns=["ID", "班级", "姓名", "成绩"])
        df = {"ID": [self.ID_info],
              "班级": [self.class_info],
              "姓名": [self.thename_info],
              "成绩": [self.score_info]}
        df = pd.DataFrame(df)

        res = pd.concat([df1, df], axis=0)

        # index=['ID','班级','姓名','成绩']

        # file = openpyxl.load_workbook(excel,'a')
        res.to_excel(self.name, sheet_name="Sheet1", index=False, engine="openpyxl")
        print("Done!")
        #file = open(name, "a")

        #file.write(ID_info)

        #file.write("\t")

        #file.write(class_info)

        #file.write("\t")

        #file.write(thename_info)

        #file.write("\t")

        #file.write(score_info)

        #file.write("\n")
  def dellete_excel(self):
      file_path = self.name
      data = pd.read_excel(self.name)
      data1 = data.drop(labels="ID",axis=0)
      data1.to_excel(file_path, sheet_name="Sheet1", index=False)
      #delete_info = self.delet.get()
      #self.ID_entry.delete(0,'end')

      #df = pd.read_excel(self.name)
      #self.df.drop([self.ID_info])
      #df.dropna(axis=0)
      #df.dropna(axis=1)
      #if self.ID_info:
      #df.drop(self.ID_info, axis=0,inplace=True)
      #df.replace(self.ID_info, "")

      self.df.to_excel(self.name)
      print("Done!")
    # file.close()

      # sys.exit(0)
def main():
    root = Tk()
    app = A(root)
    root.mainloop()
if __name__ == "__main__":
    main()
运行结果及报错内容

Exception in Tkinter callback
Traceback (most recent call last):
File "E:\Python\python3.1.8\lib\tkinter_init_.py", line 1921, in call
return self.func(*args)
File "E:\Python\pythondeom\Farme\testwen.py", line 174, in dellete_excel
file_path = self.name
AttributeError: 'A' object has no attribute 'name'

我的解答思路和尝试过的方法

不知道这样写的对不对不要喷我啊QAQ
它说class中没有name这个属性

我想要达到的结果

想知道可以用键盘输入的方法删除excel表格中 的具体数据,可以用什么方法啊,什么方法比较好啊

  • 写回答

1条回答 默认 最新

  • CSDN-Ada助手 CSDN-AI 官方账号 2022-10-21 16:22
    关注
    评论

报告相同问题?

问题事件

  • 修改了问题 10月21日
  • 创建了问题 10月21日

悬赏问题

  • ¥15 python怎么在已有视频文件后添加新帧
  • ¥20 虚幻UE引擎如何让多个同一个蓝图的NPC执行一样的动画,
  • ¥15 fluent里模拟降膜反应的UDF编写
  • ¥15 MYSQL 多表拼接link
  • ¥15 关于某款2.13寸墨水屏的问题
  • ¥15 obsidian的中文层级自动编号
  • ¥15 同一个网口一个电脑连接有网,另一个电脑连接没网
  • ¥15 神经网络模型一直不能上GPU
  • ¥15 pyqt怎么把滑块和输入框相互绑定,求解决!
  • ¥20 wpf datagrid单元闪烁效果失灵