我正在尝试将一个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)
答案 0 :(得分:0)
您可能要复制行和列的尺寸。此代码与复制单元格非常相似。
for idx, rd in ws1.row_dimensions.items():
ws2.row_dimensions[idx] = copy(rd)
如果涉及样式,则可能需要其他代码。