使用我现在用来实现所需结果的代码来回答这个问题。请注意,我是在位置1处手动插入行,但这应该足够容易以适应特定需求。您也可以轻松地对此进行调整,以插入多行,然后只需从相关位置开始填充其余数据即可。
另外,请注意,由于下游依赖性,我们手动从“ Sheet1”中指定数据,并将数据复制到工作表开头插入的新工作表中,同时将原始工作表重命名为“ Sheet1.5” 。
编辑:我还添加了(以后)对format_code的更改,以解决此处默认复制操作删除所有格式的问题:new_cell.style.number_format.format_code = 'mm/dd/yyyy'
。我找不到任何可设置的文档,更多的是反复试验的情况!
最后,请不要忘记此示例保存了原始示例。您可以在适当的地方更改保存路径来避免这种情况。
import openpyxl
wb = openpyxl.load_workbook(file)
old_sheet = wb.get_sheet_by_name('Sheet1')
old_sheet.title = 'Sheet1.5'
max_row = old_sheet.get_highest_row()
max_col = old_sheet.get_highest_column()
wb.create_sheet(0, 'Sheet1')
new_sheet = wb.get_sheet_by_name('Sheet1')
# Do the header.
for col_num in range(0, max_col):
new_sheet.cell(row=0, column=col_num).value = old_sheet.cell(row=0, column=col_num).value
# The row to be inserted. We're manually populating each cell.
new_sheet.cell(row=1, column=0).value = 'DUMMY'
new_sheet.cell(row=1, column=1).value = 'DUMMY'
# Now do the rest of it. Note the row offset.
for row_num in range(1, max_row):
for col_num in range (0, max_col):
new_sheet.cell(row = (row_num + 1), column = col_num).value = old_sheet.cell(row = row_num, column = col_num).value
wb.save(file)