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()
常见 win32.com 操作
最新推荐文章于 2025-02-12 11:16:20 发布