openpyxl进行excel的整行复制

openpyxl进行excel的整行复制

使用openpyxl,在两个sheet页(tempsheet和resultsheet)之间,整行复制单元格内容。(包括字体、样式一起复制)

class Result_excel_file:
    def __init__(self):
        __file_path = os.path.dirname(os.path.realpath(__file__))
        __result_file_name = "result_%s.xlsx" % time.strftime('%Y-%m-%d-%H%M%S')
        self.result_file = os.path.join(__file_path, 'result', __result_file_name)
        shutil.copy("./templates/result_template.xlsx", self.result_file)
        self.workbook = load_workbook(self.result_file)

    def sort_result_to_resultsheet(self):
        sheet1 = self.workbook["tempsheet"]
        resultsheet = self.workbook["resultsheet"]
        # 获取tempsheet页的所有行,并去掉标题行, 并按照ip地址进行排序
        ws_rows = [i for i in list(sheet1.rows) if i[0].value != "主机IP"]
        ws_rows= sorted(ws_rows, key=lambda x: ''.join([i.rjust(3, '0') for i in x[0].value.split('.')]))
        # 将获取到的行,连同单元格样式,一起复制到resultsheet中
        for i, row in enumerate(ws_rows):
            for j, source_cell in enumerate(row):
                target_cell = resultsheet.cell(i+2, j+1)
                target_cell.value = source_cell.value
                if source_cell.has_style:
                    target_cell._style = copy(source_cell._style)
                    target_cell.font = copy(source_cell.font)
                    target_cell.border = copy(source_cell.border)
                    target_cell.fill = copy(source_cell.fill)
                    target_cell.number_format = copy(source_cell.number_format)
                    target_cell.protection = copy(source_cell.protection)
                    target_cell.alignment = copy(source_cell.alignment)
        # 给值加上框线
        border = Border(left=Side(border_style='thin', color='000000'),
                        right=Side(border_style='thin', color='000000'),
                        top=Side(border_style='thin', color='000000'),
                        bottom=Side(border_style='thin', color='000000'))
        for row in resultsheet.rows:
            for cell in row:
                cell.border = border
        # 保存表格
        self.save_workbook()

    def save_workbook(self):
        self.workbook.save(self.result_file)
  • 1
    点赞
  • 22
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
要使用openpyxl获取整行数据,你可以使用`iter_rows()`方法。这个方法可以按行迭代表格的行,然后通过遍历每一行的单元格来获取数据。以下是一个使用openpyxl获取整行数据的示例代码: ``` import openpyxl # 加载Excel文件 workbook = openpyxl.load_workbook('t.xlsx') # 获取第一个表单 sheet = workbook['Sheet'] # 定义一个空列表用于存储行数据 data = [] # 迭代表格的行 for row in sheet.iter_rows(): # 定义一个空列表用于存储单元格数据 row_data = [] for cell in row: # 将单元格的值添加到行数据列表中 row_data.append(cell.value) # 将行数据添加到数据列表中 data.append(row_data) # 打印整行数据 for row_data in data: print(row_data) ``` 在这个示例中,我们首先加载了Excel文件,然后获取了第一个表单。然后,我们使用`iter_rows()`方法迭代表格的每一行,遍历每一行的单元格,将单元格的值添加到行数据列表中。最后,我们将行数据列表添加到数据列表中,并打印整行数据。 希望这个示例对你有帮助!<span class="em">1</span><span class="em">2</span> #### 引用[.reference_title] - *1* [python openpyxl 读取文件 整行 行读取](https://blog.csdn.net/weixin_55399173/article/details/121536508)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"] - *2* [python基于openpyxl读写excel](https://download.csdn.net/download/qq_37754459/16755721)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值