web-dev-qa-db-ja.com

openpyxl pythonを使用して、指定した行のExcelファイルにデータを追加する方法は?

既存のExcelシートに挿入したいデータを含むさまざまなPython list variables(data1、data2、data3 ect)があります。現在、私のループは次のようになります。

for row, entry in enumerate(data1,start=1):
  st.cell(row=row, column=1, value=entry)
  work.save('sample.xlsx')
for row, entry in enumerate(data2,start=1):
  st.cell(row=row, column=2, value=entry)
  work.save('sample.xlsx')
for row, entry in enumerate(data3,start=1):
  st.cell(row=row, column=3, value=entry)
  work.save('sample.xlsx')
for row, entry in enumerate(data4,start=1):
  st.cell(row=row, column=4, value=entry)
  work.save('sample.xlsx')
for row, entry in enumerate(data5,start=1):
  st.cell(row=row, column=5, value=entry)
  work.save('sample.xlsx')
for row, entry in enumerate(data6,start=1):
  st.cell(row=row, column=6, value=entry)
  work.save('sample.xlsx')
for row, entry in enumerate(data7,start=1):
  st.cell(row=row, column=7, value=entry)
  work.save('sample.xlsx')      

Pythonスクリプトが実行されると、最初の行のデータが保存されますスクリプトを再度実行している場合、新しいデータを使用可能なデータの下に配置したい

その方法は?

4
user6319690

使ってみてください

sheet.max_row 

最後の行の値が返されます。ここから新しい値の書き込みを開始できます。

max = ws.max_row
for row, entry in enumerate(data1,start=1):
   st.cell(row=row+max, column=1, value=entry)

それが役に立てば幸い。ハッピーコーディング:)

10
Strik3r

openpyxlには正確に言うとさまざまな方法がありますが、以前の回答ではws.appendは要求に応えるのに十分強力です。新しいsample.xlsxにデータを書き込んだとしましょう:

from openpyxl.workbook import Workbook

headers       = ['Company','Address','Tel','Web']
workbook_name = 'sample.xlsx'
wb = Workbook()
page = wb.active
page.title = 'companies'
page.append(headers) # write the headers to the first line

# Data to write:
companies = [['name1','address1','tel1','web1'], ['name2','address2','tel2','web2']]

for info in companies:
    page.append(info)
wb.save(filename = workbook_name)

ここで、新しい行を追加するには、まずload_workbookで既存のブックを開く必要があります。

from openpyxl import load_workbook

workbook_name = 'sample.xlsx'
wb = load_workbook(workbook_name)
page = wb.active

# New data to write:
new_companies = [['name3','address3','tel3','web3'], ['name4','address4','tel4','web4']]

for info in new_companies:
    page.append(info)

wb.save(filename=workbook_name)
9
Fuat Can

ws.append()は、常に既存のデータの下に行を追加します。

2
Charlie Clark

Append()メソッドを使用して、既存のExcelファイルに値を追加できます。例:

workbook_obj = openpyxl.load_workbook(excelFilePath)
sheet_obj = workbook_obj.active
col1 = 'NewValueCol1'
col2 = 'NewValueCol2'
sheet_obj.append([col1, col2])
workbook_obj.save(excelFilePath)

ここで、col1とcol2の値がExcelシートの既存のデータに追加されます。

1
Sarang M K