Python进行单元格拆分,所有项和第一项值相同。

1 篇文章 0 订阅
1 篇文章 0 订阅

本人前端开发工程师,python小白,在工作中,需要将合并的单元格拆分。
拆分后,只有第一项有值,其余都是空值,当数据多的时候填充起来就会麻烦。以下python代码将合并单元格拆分后进行赋值。

from openpyxl import load_workbook, Workbook
path = "C:/Users/79234/Desktop/py/"

# 获取文件
wb = load_workbook(path+'demo.xlsx')

# 选择第一张表
name_list = wb.sheetnames
worksheet = wb[name_list[0]]

# 合并单元格的位置信息,可迭代对象(单个是一个'openpyxl.worksheet.cell_range.CellRange'对象)
m_list = worksheet.merged_cells

# 行、列
mergedArr = []
for m_area in m_list:
	# 合并单元格的起始坐标、终止坐标 r1-r2横向 c1-c2纵向
	r1, r2, c1, c2 = m_area.min_row, m_area.max_row, m_area.min_col, m_area.max_col
	# 合并单元格位置信息
	if r2 - r1 > 0 or c2-c1 > 0:
		mergedArr.append((r1, r2, c1, c2))

# 合并单元格的信息提取出再拆分
for r in mergedArr:
	value = worksheet.cell(r[0], r[2]).value
	# 拆分单元格(只执行一次)
	worksheet.unmerge_cells(start_row=r[0], end_row=r[1],
							start_column=r[2], end_column=r[3])
	# 循环赋值
	# 横向
	for col in range(r[2], r[3]):
		# 向右赋值
		worksheet.cell(row=r[0], column=col+1,
					   value=value)
	# 纵向
	for row in range(r[0], r[1]):
		# row左闭右开区间  row+1 = (r[0]+1)~r[1]
		# 向下赋值
		worksheet.cell(
			row=row+1, column=r[2], value=value)
		for col in range(r[2], r[3]):
			# 向右下赋值
			worksheet.cell(row=row+1, column=col+1,
						   value=value)

wb.save(path+'demo.xlsx')

多行多列的单元格,只可拆分一次,所以合并的单元格数据都存放在mergedArr中。根据不同的方向进行拆分。

本文参考: https://blog.csdn.net/weixin_44788825/article/details/104526131
其作者是单列的填充,借鉴后根据自身需求改为多行多列。

  • 3
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值