gpt4 book ai didi

python - openPyXL - 在取消合并期间为单元格范围分配值

转载 作者:太空宇宙 更新时间:2023-11-04 00:29:10 24 4
gpt4 key购买 nike

所以我有一个 excel 文件,每个文件都有几个工作表,我正在编写脚本,如果文件中存在选定的工作表,它将收集数据并将其合并到一个大工作表中。通常它正在工作,遍历文件,如果存在所需的工作表,它会找到包含数据的单元格范围并将其附加到数据框。我现在需要做的是将标题行(列名)添加到 Dataframe,但在工作表中这些是多行标题。

为了使其在数据框中看起来相同,我需要取消合并顶部标题行中的单元格并将值从第一个单元格复制到之前合并范围内的其余单元格)。

我正在使用 OpenPyXL 访问 Excel 工作表。我的函数接收工作表作为唯一参数。它看起来像这样:

def checkForMergedCells(sheet):
merged = ws.merged_cell_ranges
for mergedCell in merged:
mc_start, mc_stop = str(mergedCell).split(':')
cp_value = sheet[mc_start]
sheet.unmerge_cells(mergedCell)
cell_range = sheet[mergedCell]
for cell in cell_range:
cell.value = cp_value

问题是 cell_range 返回一个元组,最终得到错误消息:

AttributeError: 'tuple' object has no attribute 'value' Below you can see screencap during debug which shows values passed in each variable.

Debugger running

最佳答案

按索引访问通常会返回元组的元组,除非您尝试获取单个单元格或行。对于编程访问,您应该使用 iter_rows()iter_cols()

您可能想花一些时间查看 utils 模块。

from openpyxl.utils import range_boundaries

for group in ws.merged_cell_ranges:
min_col, min_row, max_col, max_row = range_boundaries(group)
top_left_cell_value = ws.cell(row=min_row, column=min_col).value
for row in ws.iter_rows(min_col=min_col, min_row=min_row, max_col=max_col, max_row=max_row):
for cell in row:
cell.value = top_left_cell_value

关于python - openPyXL - 在取消合并期间为单元格范围分配值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46426662/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com