私はここにpythonでいくつかのコードを用意しています。これはopenpyxlを使って.xlsxファイルを作成しました。Python既存の.xlsxファイルのデータを変更します。
ただし、ファイルを変更しようとすると、新しいデータはファイルに登録されますが、以前のデータはなくなります。私はdeepcopyや(.copy.copy)を使ってファイルのデータをコピーすることを聞いたことがありますが、コピーしたデータと現在の編集内容を.xlsxファイルに貼り付けるにはどうしたらいいですか?
(それはGUIを持つプログラムであるとして、いくつかのコードはここに欠けている*、コードはjuzあまりにも長いです)
##############creating######################
try:
wb_ID = load_workbook('list.xlsx')
ws_ID = wb_ID.active
pass
except EnvironmentError as e: # OSError or IOError... As FileNotFoundError only exist in Python 3.x version
print(os.strerror(e.errno)) #use operating system error to define FileNotFoundErrorError
from openpyxl import Workbook #import Workbook function to create new xlsx (excel) file
wb_ID = Workbook()
ws_ID = wb_ID.active
ws_ID['A1'] = "IC"
ws_ID.merge_cells('B1:E1')
ws_ID['B1'] = "Name"
ws_ID.merge_cells('F1:K1')
ws_ID['L1'] = "Email"
ws_ID['M1'] = "Height"
ws_ID['N1'] = "Gender"
ws_ID['K1'] = "Bloodtype"
ws_ID.merge_cells('O1:Q1')
ws_ID['O1'] = "Default Consultation Day"
ws_ID.merge_cells('R1:T1')
ws_ID['R1'] = "Latest Appoinment"
wb_ID.save("list.xlsx")
pass
############editing#########################
wb = load_workbook(filename='list.xlsx')
ws = wb.active
last_row = 1
while True:
last_row += 1
cellchecker =ws['A'+str(last_row)].value #get the value of the cell
print(cellchecker)
print last_row
if cellchecker is None: #check if cell is empty-->then this row number is the new row
wb.save('list.xlsx')
break
else:
continue
print(str(last_row)) #convert to string var before passing the var for worksheet function
from openpyxl import Workbook
wb = Workbook()
ws = wb.active
ws['A'+str(last_row)] = (str(entry_IC.get().strip(' ')))
ws.merge_cells('B'+str(last_row)+':E'+str(last_row))
ws['B'+str(last_row)] = (str(entry_Name.get()))
ws.merge_cells('F'+str(last_row)+':K'+str(last_row))
ws['F'+str(last_row)] = (str(entry_email.get().strip(' ')))
ws['L'+str(last_row)] = (str(entry_Height.get().strip(' ')))
ws['M'+str(last_row)] = gender_selected
ws['N'+str(last_row)] = bloodtype_selected
ws.merge_cells('O'+str(last_row)+':Q'+str(last_row))
ws['O'+str(last_row)] = str(default_selected_day)
ws.merge_cells('R'+str(last_row)+':T'+str(last_row))
today = datetime.date.today() #as u might wonder why i redeclare this var since it already exist, but this is local var for this function only
ws['T'+str(last_row)] = (str(today))
wb.save('list.xlsx')
はopenpyxl文書で警告して編集部には、既存のデータを上書きしますことに気づきました。私は本当に既存の.xlsxファイルを変更する方法を見つけることができませんでした。私を助けてください、私はここで立ち往生しています。
私は問題が何かを理解していません。openpyxlは既存のファイルを編集することができます。これには上書きデータが含まれます。さらに、コードが不必要に冗長になります。 –
上記のコードは、新しいデータが保存されている間に元のデータが失われてしまう@CharlieClark –
どこのデータが失われていますか?意図的に "list.xlsx"というファイルを完全に新しいブックに置き換えています。 –