python读写、复制粘贴excel合并的单元格
目录
1、读取合并的单元格
2、判断单元格是否是合并的单元格
3、判断合并区域左上角单元格的位置
4、写入合并的单元格
3、复制和粘贴合并的单元格
4、python解散合并的单元格
5、python合并单元格
1、读取合并的单元格
excel示例文件,其中有一个合并的单元格:
使用脚本依次读取A1、A2、B1、B2单元格,发现只有读取A1,才能读取到合并单元格的内容。
简而言之,就是合并区域,左上角的单元格才能读取到合并区域的内容。
import win32com.client as client
from win32com.client import constants
import os
xls_app = client.gencache.EnsureDispatch('Excel.Application')#打开Excel应用程序
xls_app.Visible =1#设置应用程序可见
curr_path = os.getcwd()
wb = xls_app.Workbooks.Open(r'%s\合并单元格示例.xlsx'%curr_path)
#
sht = wb.Worksheets(1)# 指向第一个sheet页
# 读取合并的单元格
txt_a1 = sht.Range('A1')
txt_b1 = sht.Range('B1')
txt_a2 = sht.Range('A2')
txt_b2 = sht.Range('B2')
print(txt_a1)
print(txt_a2)
print(txt_b1)
print(txt_b2)
输出:
我在这
None
None
None
2、判断单元格是否是合并的单元格
使用Range.MergeCells来判断单元格是否是合并区域内的单元格。
print('A1:',sht.Range('A1').MergeCells)
print('B1:',sht.Range('B1').MergeCells)
print('A2:',sht.Range('A2').MergeCells)
print('B2:',sht.Range('B2').MergeCells)
print('A3:',sht.Range('A3').MergeCells)
输出:
A1: True
B1: True
A2: True
B2: True
A3: False
可以看到,合并区域内的单元格
3、判断合并区域左上角单元格的位置
访问合并区域内任何一个单元格,然后调用Range.MergeArea,就能得到合并区域整体的Range,然后使用Cells(1,1)指向区域内左上角的cell,就能得到合并区域的内容。
print(sht.Range('B1').MergeArea.Cells(1,1).Text)
使用cell的range,就能获取到合并区域左上角的单元格,在整个表上的坐标。
cell = sht.Range('B1').MergeArea.Cells(1,1)
print(cell.Row)
print(cell.Column)
4、写入合并的单元格
必须写入合并区域的左上角的单元格,才能修改合并单元格的内容
sht.Range('A1').Value = '新内容' #可以修改
sht.Range('B1').Value = '新内容' # 不会修改合并单元格内容!!!
3、复制和粘贴合并的单元格
复制合并单元格,必须复制合并区域整体,才能复制成功。
# 复制和粘贴合并的单元格
merge_rng = sht.Range('B1').MergeArea
merge_rng.Copy()
sht.Paste(sht.Range('C1'))
运行效果:
4、python解散合并的单元格
merge_rng = sht.Range('C1').MergeArea #找到新粘贴的合并区域
merge_rng.UnMerge() #解散合并的单元格
运行效果:
解散后,只有C1区域,并且合并的内容会保留在C1单元格内。
5、python合并单元格
将C1到E2之间的矩形区域合并。
sht.Range('C1:E2').Merge() # 合并单元格
运行效果:
作者:flashman911