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

物联沃分享整理
物联沃-IOTWORD物联网 » python读写、复制粘贴excel合并的单元格

发表回复