鱼C论坛

 找回密码
 立即注册
查看: 2165|回复: 4

[已解决]如何保存数据到excel且其他单元格数据不清空

[复制链接]
发表于 2018-4-18 17:41:43 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
如题,执行以下代码的时候除了新输入的第三行AB列的值,其他sheet、单元格内容被清空。
希望在插入新数据的时候可以保留已有数据,谢谢!


from tkinter import *
import openpyxl

root = Tk()
Label(root,text="作品: ").grid(row=0)
Label(root,text="作者: ").grid(row=1)
e1 = Entry(root)
e2 = Entry(root)
e1.grid(row=0,column=1,padx=10,pady=5)
e2.grid(row=1,column=1,padx=10,pady=5)


def show(indata):
    print("作品:《%s》"%e1.get())
    print("作者:%s"%e2.get())
    print('indata is %s'%indata)

    #写入excel
    wb = openpyxl.Workbook()
    sheet = wb.active
    sheet.title = 'entrytest'#唯一工作簿(覆盖、删除原有工作簿)
    sheet.cell(row=3,column=1,value=e1.get())#row=1,column=1第一行A(row=2时文档中row=1数据会被清空,只剩row=2的信息)
    sheet.cell(row=3,column=2,value=e2.get())#row=1,column=2第一行B

    wb.save('data/2007.xlsx')

    #清空输入框
    e1.delete(0,END)
    e2.delete(0,END)

Button(root,text="获取信息",width=10,command=lambda:show('a'))\
    .grid(row=3,column=0,sticky=W,padx=10,pady=5)
Button(root,text="退出",width=10,command=root.quit)\
    .grid(row=3,column=1,sticky=E,padx=10,pady=5)

mainloop()
最佳答案
2018-4-19 18:46:11
懒精 发表于 2018-4-19 18:29
再次打开excel,写入数据时还是会覆盖第一次save的内容

你每次都new一个workbook对象保存的时候又是同名当然会覆盖了
写个判断判断某文件是否存在,是的话load_workbook
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2018-4-18 18:13:01 | 显示全部楼层
用sheet.append([e1.get(),e2.get()])
要么定义计数器,每次点击获取信息后计数器+1,使用
sheet.cell(row=count,column=1,value=e1.get())
sheet.cell(row=count,column=2,value=e2.get())
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2018-4-19 18:29:20 | 显示全部楼层
chakyam 发表于 2018-4-18 18:13
用sheet.append([e1.get(),e2.get()])
要么定义计数器,每次点击获取信息后计数器+1,使用
sheet.cell(row ...

再次打开excel,写入数据时还是会覆盖第一次save的内容
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2018-4-19 18:46:11 From FishC Mobile | 显示全部楼层    本楼为最佳答案   
懒精 发表于 2018-4-19 18:29
再次打开excel,写入数据时还是会覆盖第一次save的内容

你每次都new一个workbook对象保存的时候又是同名当然会覆盖了
写个判断判断某文件是否存在,是的话load_workbook
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2018-4-23 14:53:37 | 显示全部楼层
chakyam 发表于 2018-4-19 18:46
你每次都new一个workbook对象保存的时候又是同名当然会覆盖了
写个判断判断某文件是否存在,是的话load_ ...

成功了。跟进load_workbook查了一下资料稍微改进了一下。代码如下:

from tkinter import *
import openpyxl
from openpyxl import load_workbook
from openpyxl import Workbook

root = Tk()
Label(root,text="作品: ").grid(row=0)
Label(root,text="作者: ").grid(row=1)
e1 = Entry(root)
e2 = Entry(root)
e1.grid(row=0,column=1,padx=10,pady=5)
e2.grid(row=1,column=1,padx=10,pady=5)


def show(indata):
    print("作品:《%s》"%e1.get())
    print("作者:%s"%e2.get())
    print('indata is %s'%indata)

    #写入excel

    wb = load_workbook('data/2007.xlsx')
    sheet = wb.get_sheet_by_name('entrytest2')

    sheet.cell(row=2,column=1,value=e1.get())
    sheet.cell(row=2,column=2,value=e2.get())

    wb.save('data/2007.xlsx')

    #清空输入框
    e1.delete(0,END)
    e2.delete(0,END)

Button(root,text="获取信息",width=10,command=lambda:show('a'))\
    .grid(row=3,column=0,sticky=W,padx=10,pady=5)
Button(root,text="退出",width=10,command=root.quit)\
    .grid(row=3,column=1,sticky=E,padx=10,pady=5)

mainloop()
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2026-3-10 16:43

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表