当前位置:   article > 正文

Python使用openpyxl在excel中追加一行数据、一列数据_openpyxl 插入行数据

openpyxl 插入行数据

需求:我要在指定的excel文件中追加写入数据,分成按行追加与按列追加2种方式。文件中原有数据的行数与列数未知,原有数据不可被覆盖。

这里记录一下我用openpyxl实现的方法。

追加写入1行数据

条件:test.xlsx是已存在的文件,'sample1'这个sheet页是数据写入的目标页。

方法1.使用append

此方法使用worksheet.max_row获取指定sheet中的最大行数,接着使用append将一个list类型的值添加到最大行数的下一行。

  1. import openpyxl
  2. if __name__ == '__main__':
  3. # 指定文件路径
  4. file_full_path = r'D:\Test\test.xlsx'
  5. # sheet名称
  6. sheet_name = 'sample1'
  7. # 获取指定的文件
  8. wb = openpyxl.load_workbook(file_full_path)
  9. # 获取指定的sheet
  10. ws = wb[sheet_name]
  11. # 获得最大行数
  12. max_row_num = ws.max_row
  13. # 获得最大列数
  14. max_col_num = ws.max_column
  15. # 将当前行设置为最大行数
  16. ws._current_row = max_row_num
  17. # 使用append方法,将行数据按行追加写入
  18. values = ['Jack', '12', '2023/11/12', 'Failed']
  19. ws.append(values)
  20. # 保存文件
  21. wb.save(file_full_path)

打开文件确认,新的数据已按行追加写入,结果符合预期。

方法2.使用for循环

这个方法是我在发现append之前调试成功的,作为参考也放上来,最终效果一样。

  1. import openpyxl
  2. if __name__ == '__main__':
  3. # 指定文件路径
  4. file_full_path = r'D:\Test\test.xlsx'
  5. # sheet名称
  6. sheet_name = 'sample1'
  7. # 获取指定的文件
  8. wb = openpyxl.load_workbook(file_full_path)
  9. # 获取指定的sheet
  10. ws = wb[sheet_name]
  11. # 获得最大行数
  12. max_row_num = ws.max_row
  13. # 获得最大列数
  14. max_col_num = ws.max_column
  15. values = ['Lisa', '35', '2023/11/27', 'Passed']
  16. # 追加一行数据
  17. for i in range(1, max_col_num + 1, 1):
  18. ws.cell(max_row_num + 1, i).value = values[i - 1]
  19. # 保存文件
  20. wb.save(file_full_path)

for i in range(1, max_col_num + 1, 1)指的是以1为起点,max_col_num+1终点,1为步长递增。按照C语言的方式理解,就是for(uint8 i = 1; i < max_col_num+1, i++)。

values是一个list类型的变量,从索引0开始依次取值,将值添加到(3行,1列)、(3行,2列)、(3行,3列)、(3行,4列)单元格中。

最后打开文件确认,确认行数据被成功写入excel文件中。

追加写入1列数据

条件:test.xlsx是已存在的文件,'sample2'这个sheet页是数据写入的目标页。

以下是运行成功的代码,往指定sheet页中追加1列数据。

  1. import openpyxl
  2. if __name__ == '__main__':
  3. # 指定文件路径
  4. file_full_path = r'D:\Test\test.xlsx'
  5. # sheet名称
  6. sheet_name = 'sample2'
  7. # 获取指定的文件
  8. wb = openpyxl.load_workbook(file_full_path)
  9. # 获取指定的sheet
  10. ws = wb[sheet_name]
  11. # 获得最大行数
  12. max_row_num = ws.max_row
  13. # 获得最大列数
  14. max_col_num = ws.max_column
  15. values = ['Jack', '17', '2023/10/2', 'Failed']
  16. for each in values:
  17. # 通过row关键字指定行,colunm关键字指定列,均从1开始
  18. ws.cell(row=values.index(each) + 1, column=max_col_num+1, value=each)
  19. # 保存文件
  20. wb.save(file_full_path)

打开工作簿确认,列数据被追加写入,结果符合预期。

注意事项

使用openpyxl处理单元格数据时,起始坐标从(1,1)开始,不是(0,0)。

假如把cell(3,1)写成cell(3,0) ,会报错ValueError: Row or column values must be at least 1

※参考文章

https://blog.csdn.net/Gsdxiaohei/article/details/82048180

https://fishc.com.cn/thread-144721-1-1.html

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/我家小花儿/article/detail/69565
推荐阅读
相关标签
  

闽ICP备14008679号