当前位置:   article > 正文

【python】openpyxl复制插入多行数据_openpyxl插入行

openpyxl插入行

从一个excel表复制插入多行数据到另一个excel表中

其实就是把行范围内的所有单元格(包括单元格格式和内容)复制到另一个表中,其中值(value)和单元格数字格式(number_format)可以直接复制值,用等号连接即可。其他格式,例如字体格式(font)、对齐方式(alignment)、填充(fill)、边框(border)属性,需要用到深拷贝也就是copy方法。
更多单元格样式的操作可以去看官方文档:https://openpyxl.readthedocs.io/en/stable/styles.html
中文官方文档:https://openpyxl-chinese-docs.readthedocs.io/zh_CN/latest/styles.html

from copy import copy
import openpyxl as xl
'''
@Desc	  :   复制插入多行数据
@param1	:   copy_path = 要复制的文件路径 copy_sheet_name = 要复制的工作表名称 copy_rows_start = 需要复制的开始行 
			insert_path = 需要插入的文件路径 insert_sheet_name = 需要插入的工作表  insert_rows_start = 需要插入的开始行  num = 复制的行数
@return	:   None
'''

def insert_multi_row(copy_path,copy_sheet_name,copy_rows_start,insert_path,insert_sheet_name,insert_rows_start,num):
    copy_rows_start = int(copy_rows_start)
    insert_rows_start = int(insert_rows_start)
    num = int(num)
    try:
        #打开要操作的工作簿
        wb_copy = xl.load_workbook(copy_path)
        wb_insert = xl.load_workbook(insert_path)
        
        #打开对应工作表
        if copy_sheet_name == '':
            ws_copy = wb_copy.active
        else:
            ws_copy = wb_copy[copy_sheet_name]

        if insert_sheet_name == '':
            ws_insert = wb_insert.active
        else:
            ws_insert = wb_insert[insert_sheet_name]
         
    except Exception as e:
        print('工作表不存在!')
    
    # 遍历每一行,循环插入数据
    for i in range(num):
        insert_rows = insert_rows_start + i
        copy_rows = copy_rows_start + i
        ws_insert.insert_rows(insert_rows) #指定行号先插入空白行
        cols = ws_copy.max_column #获取列数


        for i in range(1,cols):
            #复制一行数据粘贴到另一行
			#单元格值及内容复制粘贴
			ws_insert.cell(insert_rows, i).value = ws_copy.cell(copy_rows, i).value
            ws_insert.cell(insert_rows, i).number_format = ws_copy.cell(copy_rows, i).number_format
            ws_insert.cell(insert_rows, i).font = copy(ws_copy.cell(copy_rows, i).font)
            ws_insert.cell(insert_rows, i).alignment = copy(ws_copy.cell(copy_rows, i).alignment)
            ws_insert.cell(insert_rows, i).fill = copy(ws_copy.cell(copy_rows, i).fill)
            ws_insert.cell(insert_rows, i).border = copy(ws_copy.cell(copy_rows, i).border)
        
        #行高调整
        ws_insert.row_dimensions[insert_rows + 1].height = ws_insert.row_dimensions[insert_rows].height
        ws_insert.row_dimensions[insert_rows].height = ws_copy.row_dimensions[copy_rows].height


    wb_insert.save(insert_path)


  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33
  • 34
  • 35
  • 36
  • 37
  • 38
  • 39
  • 40
  • 41
  • 42
  • 43
  • 44
  • 45
  • 46
  • 47
  • 48
  • 49
  • 50
  • 51
  • 52
  • 53
  • 54
  • 55
  • 56
  • 57
  • 58
声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/你好赵伟/article/detail/69573
推荐阅读
相关标签
  

闽ICP备14008679号