如何将行高和列宽从一个Excel文件复制到另一个

时间:2018-10-09 18:31:40

标签: excel python-3.x openpyxl

我正在尝试将一个Excel工作表从一个Excel工作簿复制到另一个Excel工作簿中的另一个Excel工作表。

当前,我可以复制所有单元格的值和格式。唯一不起作用的是列和行的高度不匹配。

此外,如果存在“分组”(我不确定excel中技术上隐藏的单元格),则需要对它们进行分组。

有人知道如何执行此操作吗?

至少对于行高部分,我一直在尝试找出如何使用height方法。最初,我只是想打印出高度尺寸,以查看是否可以迭代它们,但是到目前为止还没有运气。

wb = openpyxl.load_workbook('Documents/test/DISCIPLINEDEQUITYATTR_EAFE_AlphaAttribution_3YRS_20180928_CLPSE.xlsx')
ws = wb.active

for i in ws.row_dimensions[2].height:
    print(i)

但我只是收到错误TypeError:“ float”对象不可迭代

请参见下面的代码

import openpyxl as xl
from copy import copy


path1 = 'Documents/test/DISCIPLINEDEQUITYATTR_EAFE_AlphaAttribution_3YRS_20180928_CLPSE.xlsx'
path2 = 'Documents/test/DISCIPLINEDEQUITYATTR_EAFE_AlphaAttribution_3YRS_20180928_CLPSE_COPY.xlsx'

wb1 = xl.load_workbook(filename=path1)
ws1 = wb1.worksheets[0]

wb2 = xl.load_workbook(filename=path2)
ws2 = wb2.create_sheet(ws1.title)

for row in ws1:
    for cell in row:
        new_cell = ws2.cell(row=cell.row, column=cell.col_idx, value=cell.value)
        if cell.has_style:
            new_cell.font = copy(cell.font)
            new_cell.border = copy(cell.border)
            new_cell.fill = copy(cell.fill)
            new_cell.number_format = copy(cell.number_format)
            new_cell.protection = copy(cell.protection)
            new_cell.alignment = copy(cell.alignment)

wb2.save(path2)

1 个答案:

答案 0 :(得分:0)

您可能要复制行和列的尺寸。此代码与复制单元格非常相似。

for idx, rd in ws1.row_dimensions.items():
     ws2.row_dimensions[idx] = copy(rd)

如果涉及样式,则可能需要其他代码。