如何使用openpyxl python将数据从指定行追加到excel文件?

2024-09-28 13:17:24 发布

您现在位置:Python中文网/ 问答频道 /正文

我有不同的Python列表变量(data1、data2、data3 ect),其中包含我想放入已经存在的excel工作表中的数据。现在我的循环是这样的。

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脚本运行,它将存储第一行的数据。如果我再次运行脚本,我希望新数据低于可用数据

怎么做?


Tags: 数据sampleinforvaluesavecellcolumn
3条回答

ws.append()将始终在任何现有数据下添加行。

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)

现在,若要附加新行,必须首先使用“加载工作簿”打开现有书本:

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)

尝试使用

sheet.max_row 

它将返回最后一行值,您可以从这里开始编写新值。

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

希望有帮助。快乐的编码:)

相关问题 更多 >

    热门问题