常见 win32.com 操作

import win32com.client
from win32api import RGB

xlapp = win32com.client.gencache.EnsureDispatch("Ket.Application")
xlapp.Visible = False
xlapp.DisplayAlerts = False

path =""
xlwb = xlapp.Workbooks.Open(Filename=path, UpdateLinks=0, ReadOnly=False, Format=None, Password="",WriteResPassword="")
xlws = xlwb.Worksheets(1)
# 获取行数
rows = xlws.UsedRange.Rows.Count
# 获取列数
cols = xlws.UsedRange.Columns.Count
# 输出工作簿的所有sheet页的名称
print([i.Name for i in xlwb.Worksheets])
# 激活sheet2
xlapp.Worksheets("Sheet2").Activate()
# 给单元格A1赋值
xlws.Range("A1").Value="hello"
# 单元格格式设置
xlws.Rows(2).NumberFormatLocal = "@"  # 设置单元格为文本格式
xlws.Columns(2).NumberFormatLocal = "yyyy/mm/dd"  # 设置单元格格式为yyyy/mm/dd
# 网格线
xlws.Rows(5).Borders.LineStyle = 1  # 某行设置网格线
xlws.Range("A9:B12").Borders.Color=3  # 往某个区域内添加网格线
# 对齐方式
xlws.Rows(1).HorizontalAlignment = -4103  # 某行居中对齐xlCenter
# 背景颜色
xlws.Cells(1,1).Interior.Color=13408767  # 设置背景色为粉底
xlws.Range("A1").Interior.ColorIndex=3
xlws.Cells(1,1).Interior.Color=RGB(123,22,123)
# 字体设置
xlws.Cells(1,2).Font.Color=3  # 字体颜色
xlws.Cells(1,2).Font.Size=15  # 字体大小
xlws.Cells(1,2).Font.Bold=True  # 字体格式(粗体)
xlws.Cells(1,2).Font.Name="Arial"  # 字体名称
xlws.Cells(1,1).Font.ColorIndex=3
xlws.Cells(1,1).Font.Color=RGB(0,0,255)
# 为某单元格写入公式,也可覆盖原有的公式
xlws.Range("A1").Formula = '=COUNTIF(J15:J1424,"X")+COUNTIF(J15:J1424,"O")'
# 根据函数公式,计算一列的数据总和
print(xlapp.WorksheetFunction.Sum(xlws.Columns(11)))
# data_tuple为数据的元组形式,每一行为一个元组,即((第一行),(第二行)),可通过下标取值
data_tuple = xlws.UsedRange.Value
print(data_tuple[15]) # 输出第16行数据
# 按指定单元格排序,Order1=1为升序,2为降序
xlws.Range("H2:J14").Sort(Key1=xlws.Range("H1"),Order1=1,
                              Key2=xlws.Range("I1"),Order2=2,
                              Key3=xlws.Range("J1"),Order3=1,
                              Orientation=1)
# 指定查找,如在A列中查找200,可以在后面加上Row,Column来返回所在行,列,其中LookAt=1表示准确匹配,LookIn=-4163表示匹配值
row = xlws.Range("A:A").Find(What="1*",LookAt=1,LookIn=-4163).Row
# 刷选
xlws.Range("A1").AutoFilter(field=5,Criterial="<>同事")
# Criteria1 =空白字段  <>查找非空白字段 ><选择数据类型中的(否数据)字段
# 筛选过后,可见的第2列的数据
xlws.Columns(2).SpecialCells(12)
# 筛选出来的结果中,一列数据的总和
xlapp.WorksheetFunction.Sum(xlws.Columns(2).SpecialCells(12))
# 清除筛选条件
xlws.ShowAllData()
# 选择范围,从第二行到最下面不为空的行
xlws.Range(xlws.Rows(2),xlws.Rows(2).End(-4121)).Select()

# 获取“职务”列的列号
col = xlws.Rows(1).Find("职务").Column
# 删除筛选出来的内容,其中SpecialCells(12)为可见的,即在指定范围内对被筛选出来的可见的内容进行删除
xlws.Range(xlws.Cells(2,col), xlws.Cells(rows,col).End(-4121)).SpecialCells(12).ClearContents()


# 指定单元格添加注释
# comment = "哈哈"
# a = xlws.Range("A4").Comment.Text()
# if not a:
#     xlws.Range("A4").AddComment(comment)
# 判断是否已经添加批注
# if xlws.Range("A4").Comment:
#     print("存在")
# else:
#     print("不存在")
# 在原批注上追加信息
# a = xlws.Range("A4").Comment.Text()
# print(a)
# xlws.Range("A4").Comment.Text(a +"嘻嘻")

# 复制
# xlws.Range("A2:B9").Copy()  # 复制某个范围
# xlws.Rows(3).Copy()  # 复制某行
# xlws.Range(xlws.Columns(2),xlws.Columns(4)).Copy()  # 复制第2列到第4列
# xlws.Range(xlws.Cells(1,1),xlws.Cells(1,5)).Copy() # 复制单元格A1到A5
# xlws.Range(xlws.Range("A:A"),xlws.Range("C:C")).Copy()  # 复制第A列到第C列
# 复制的内容粘贴到xlws的Range
# xlws.Paste(xlws.Range("A23:B30"))

# 选择性粘贴值
# xlws.Range("A1:C10").Copy()  # 复制范围
# xlws.Cells(6,1).PasteSpecial(-4163)  # 粘贴至某个单元格,会自动填充单元格

# 数值覆盖,相当于选择性数值粘贴,会覆盖公式
# xlws.Range('F7').Value=xlws.Range('E7').Value # 数值
# 选择性粘贴,一块区域
# xlws.Range('B12:D20').Value=xlws.Range('B1:D9').Value

# 剪切插入(能够自动换行)
# xlws.Range("A1:D1").Cut()
# xlws.Rows(5).Insert()  # 在指定行前插入


# 删除某行
# xlws.Rows(1).Delete()
# 删除某列
# xlws.Columns(1).Delete()
# xlws.Range("A:A").Delete()
# 清除所有内容,包括格式,外边框,颜色等
# xlws.Range("A1:B5").Clear()
# 只清除单元格内容
# xlws.Range("A1:B5").ClearContents()
# xlws.Rows(2).ClearContents() # 清除第二行单元格内容

# 删除sheet页
# xlws.Worksheets(("AA","BB","CC"),).Delete()
# xlws.Worksheets(["混混","啦啦"]).Delete()
# 在当前sheet页前,新增sheet页
# xlws.Worksheets.Add().Name = "haha"
# 在指定的sheet页前面插入新的sheet页
# xlws.Worksheets.Add(xlws.Worksheets("haha")).Name = "gg"

# 默认方式自动填充,对指定区域中的单元格进行自动填充
# xlws.Range("A1").AutoFill(Destination=xlws.Range("A1:A10"),
#                               Type=wc.constants.xlFillDefault)


# 分列
# xlws.Range("B1:B10").TextToColumns(Destination=xlws.Range("B1"),
#                                        DataType=wc.constants.xlDelimited,
#                                        TextQualifier=wc.constants.xlDoubleQuote,
#                                        ConsecutiveDelimiter=True,
#                                        Tab=True,
#                                        Space=True,
#                                        TrailingMinusNumbers=True)


# 合并,Across:True行 False列
# xlws.Range("H3:K10").Merge(Across=True)  # 行合并
# xlws.Range("H3:I6").Merge(Across=False)  # 列合并
# col = xlws.Rows(1).Find("A").Column  # 所在列数
# 读取合并的单元格,从当前选择单元格算起
# print(xlws.Cells(1,col).MergeArea.Cells(3, 1))
# print(xlws.Range("H3:I6").MergeCells) # 判断是否是合并的单元格
# xlws.Cells(3,col).HorizontalAlignment = -4108  # 某行水平居中对齐xlCenter
# xlws.Cells(3,col).VerticalAlignment = -4108  # 某行垂直居中对齐xlCenter


# 复制公式下拉操作
xlws.Range("H2:L2").Copy()
last_row = xlws.Range("A1").End(-4121).Row  # 获取A列的最后一行的行数
xlws.Paste(xlws.Range("H2:L{}".format(last_row)))

# G列为数字
xlws.Range("P1").Copy()  # 复制一个单元格
xlws.Range("G:G").PasteSpecial(Paste=-4163,Operation=2,SkipBlanks=False,Transpose=False)  # 相加转化为数字

# 1.保存
xlwb.Save()
# 2.另存为,第一个为保存路径,要加上文件名称,第二个为文件格式,第三个为打开密码,第四个为修改密码
xlwb.SaveAs(Filename=path,FileFormat=None,Password='0000',WriteResPassword='0000')
# 3.关闭excel工作簿
xlwb.Close()
# 4.退出Excel应用
xlapp.Quit()


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值