如何解决有没有一种方法可以使用Pythonopenpyxl复制合并的单元格?
我正在尝试使用Python编写代码以重复复制一定范围的Excel文件。
就像下面的图像文件一样,通过在工作表上放置几列来复制相同的内容,而现有内容在同一工作表中。
尽管是入门级的能力,但起初我认为这真的很容易实现。除了合并的单元格之外,我已经通过下面的代码实现了我的大部分计划
import openpyxl
from openpyxl import Workbook
wb = openpyxl.load_workbook('DSD.xlsx')
ws = wb.worksheets[3]
from openpyxl.utils import range_boundaries
min_col,min_row,max_col,max_row = range_boundaries('I1')
for row,row_cells in enumerate(wb['2'],min_row):
for column,cell in enumerate(row_cells,min_col):
# Copy Value from Copy.Cell to given Worksheet.Cell
ws.cell(row=row,column=column).value = cell.value
ws.cell(row=row,column=column)._style = cell._style
wb.save('DSD.xlsx')
但是,我已经搜索了几天并考虑了一下,但是我不知道如何合并合并的单元格。除此之外,我什至不知道这在技术上是否可行。
我今天想到的方式是,在工作表中拉出一个合并单元格列表,然后从每个合并单元格的坐标中仅添加更多列,以添加要合并到相同程度的命令。
但是,由于我拔出了如下所示的合并单元格列表,因此我无法考虑该怎么做。 有办法吗?
import openpyxl
from openpyxl import Workbook
wb=openpyxl.load_workbook('merged.xlsx')
ws=wb.active
Merged_Cells = ws.merged_cell_ranges
a = Merged_Cells[0]
print(ws.merged_cell_ranges)
print(a)
[<MergedCellRange B2:C3>,<MergedCellRange B9:C9>,<MergedCellRange B13:B14>]
B2:C3
与a对应的值B2:C3似乎是一个特殊值,即使看起来好像是“ B2:C3”,a.replace(~~)也不起作用。
真的没有办法吗?
解决方法
您需要查看CellRanges的工作方式,因为您需要计算每个范围的偏移量,然后使用原始尺寸为新单元格创建新的MergedCellRange。
以下内容应使您了解如何操作。
from openpyxl.worksheet.cell_range import CellRange
area = CellRange("A1:F13") # area being copied
for mcr in ws.merged_cells:
if mcr.coord not in area:
continue
cr = CellRange(mcr.coord)
cr.shift(col_shift=10)
ws.merge_cells(cr.coord)
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。