import pandas as pd
from openpyxl import load_workbook
#This is how to make a new dataframe and transfer it to a demo excel file in sheet1
# dataframe Name and Age columns
df = pd.DataFrame({'#': [1, 2, 3, 4], 'Name': ['John Doe', 'Jamie Perkins', 'Daryl Walker', 'Dave Mann'], 'Age': [10, 20, 30, 45]})
# Create a Pandas Excel writer using XlsxWriter as the engine.
writer = pd.ExcelWriter('demo.xlsx', engine='xlsxwriter')
# Convert the dataframe to an XlsxWriter Excel object.
df.to_excel(writer, sheet_name='Sheet1', index=False)
# Close the Pandas Excel writer and output the Excel file.
writer.save()
#Up next is how to add new information to a sheet1
# new dataframe with same columns
df2 = pd.DataFrame({'#': [5, 6, 7, 8], 'Name': ['E','F','G','H'], 'Age': [100,70,40,60]})
writer = pd.ExcelWriter('demo.xlsx', engine='openpyxl')
# try to open an existing workbook
writer.book = load_workbook('demo.xlsx')
# copy existing sheets
writer.sheets = dict((ws.title, ws) for ws in writer.book.worksheets)
# read existing file
reader = pd.read_excel(r'demo.xlsx')
# write out the new sheet
df2.to_excel(writer,index=False,header=False,startrow=len(reader)+1)
writer.close()
#What I want to figure out is how to modify a name based on input from user and update the information to the existing cell in the excel file
num = input("Which name do you want to change?(choose a number)\n")
number = int(num)
if number == 1:
nName = input("What is the new Name\n")
df3 = pd.DataFrame({'Name': [nName]})
writer = pd.ExcelWriter('demo.xlsx', engine ='openpyxl')
writer.book = load_workbook('demo.xlsx')
reader = pd.read_excel(r'demo.xlsx')
df3.to_excel(writer,index=False,header=False,startrow=1)
writer.close()
elif number == 2:
nName = input("What is the new Name\n")
df4 = pd.DataFrame({'Name': [nName]})
writer = pd.ExcelWriter('demo.xlsx', engine ='openpyxl')
writer.book = load_workbook('demo.xlsx')
reader = pd.read_excel(r'demo.xlsx')
df4.to_excel(writer,index=False,header=False,startrow=2)
writer.close()
elif number == 3:
nName = input("What is the new Name\n")
df5 = pd.DataFrame({'Name': [nName]})
writer = pd.ExcelWriter('demo.xlsx', engine ='openpyxl')
writer.book = load_workbook('demo.xlsx')
reader = pd.read_excel(r'demo.xlsx')
df5.to_excel(writer,index=False,header=False,startrow=3)
writer.close()
elif number == 4:
nName = input("What is the new Name\n")
df6 = pd.DataFrame({'Name': [nName]})
writer = pd.ExcelWriter('demo.xlsx', engine ='openpyxl')
writer.book = load_workbook('demo.xlsx')
reader = pd.read_excel(r'demo.xlsx')
df6.to_excel(writer,index=False,header=False,startrow=4)
writer.close()
elif number == 5:
nName = input("What is the new Name\n")
df7 = pd.DataFrame({'Name': [nName]})
writer = pd.ExcelWriter('demo.xlsx', engine ='openpyxl')
writer.book = load_workbook('demo.xlsx')
reader = pd.read_excel(r'demo.xlsx')
df7.to_excel(writer,index=False,header=False,startrow=5)
writer.close()
elif number == 6:
nName = input("What is the new Name\n")
df8 = pd.DataFrame({'Name': [nName]})
writer = pd.ExcelWriter('demo.xlsx', engine ='openpyxl')
writer.book = load_workbook('demo.xlsx')
reader = pd.read_excel(r'demo.xlsx')
df8.to_excel(writer,index=False,header=False,startrow=6)
writer.close()
elif number == 7:
nName = input("What is the new Name\n")
df9 = pd.DataFrame({'Name': [nName]})
writer = pd.ExcelWriter('demo.xlsx', engine ='openpyxl')
writer.book = load_workbook('demo.xlsx')
reader = pd.read_excel(r'demo.xlsx')
df9.to_excel(writer,index=False,header=False,startrow=7)
writer.close()
elif number == 8:
nName = input("What is the new Name\n")
df10 = pd.DataFrame({'Name': [nName]})
writer = pd.ExcelWriter('demo.xlsx', engine ='openpyxl')
writer.book = load_workbook('demo.xlsx')
reader = pd.read_excel(r'demo.xlsx')
df10.to_excel(writer,index=False,header=False,startrow=8)
writer.close()
else:
print("Wrong input please try again")
Я знаю, как создать новый фрейм данных, перенести его в демонстрационный файл Excel и назвать его sheet1. Я также знаю, как добавлять новые данные в существующий файл Excel.
Я хочу знать, как изменить ячейку на основе ввода от пользователя и обновить информацию в существующей ячейке в файле Excel. Кажется, что использование операторов if работает, но не обновляет файл Excel. Я также хочу знать, есть ли более простой способ обойти это, кроме использования множества других if. Я хочу изменять только одно имя за раз.
Буду признателен за любую помощь, которую я могу получить!
Редактировать: Спасибо за отзыв о синтаксисе, к сожалению, я все еще сталкиваюсь с ошибка файла Excel не обновляется, на терминале нет ошибки, но он не обновляется.