首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >有没有办法用Python(openpyxl)复制合并后的单元格?

有没有办法用Python(openpyxl)复制合并后的单元格?
EN

Stack Overflow用户
提问于 2020-10-16 19:36:59
回答 1查看 1.1K关注 0票数 0

我正在尝试使用Python编写代码,以重复复制特定范围的Excel文件。

与下面的图像文件类似,通过在工作表上放置几列与同一工作表中的现有内容相同的内容可以复制相同的内容。

enter image description here

尽管这是一种入门水平的能力,但一开始我认为它真的很容易实现。我已经通过下面的代码实现了我的大部分计划,除了合并的单元格

代码语言:javascript
运行
复制
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')

enter image description here

然而,我已经搜索了几天并思考了它,但我不知道如何合并合并的单元格。除此之外,我甚至不知道这在技术上是否可行。

我今天想到的方法是在工作表中拉出一个合并单元格的列表,然后从每个合并单元格的坐标中添加更多的列,以添加相同程度的合并命令。

但是,由于我取出了合并后的单元格列表,如下所示,我不知道该怎么办。有什么办法吗?

代码语言:javascript
运行
复制
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)
代码语言:javascript
运行
复制
[<MergedCellRange B2:C3>, <MergedCellRange B9:C9>, <MergedCellRange B13:B14>]
B2:C3

对应于a的值B2:C3看起来是一个特殊的值,其中a.replace(~~)不起作用,即使该值看起来是"B2:C3“。

真的没有办法吗?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-10-16 21:37:52

您需要了解CellRanges是如何工作的,因为您需要计算每个范围的偏移量,然后使用原始单元格中的尺寸为新单元格创建一个新的MergedCellRange。

下面的内容应该会让你对如何做到这一点有所了解。

代码语言:javascript
运行
复制
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)
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/64388428

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档