import pythoncom
from win32com.client import DispatchEx
pythoncom.CoInitialize()
xlApp = DispatchEx('Excel.Application')
xlApp.Visible = True # 可视,True or False
xlApp.DisplayAlerts = False # 弹出警告
wb = xlApp.Workbooks.Open(io,False) # io:excel文件地址
# 操作完成后
# 保存
wb.Save()
# 另存为
wb.SaveAs(io, 51) # io地址的文件,51表示是xlsx的文件
wb.Close() # 关闭文件
xlApp.Quit() # 关闭excel程序
pythoncom.CoUninitialize() # 关闭线程
# 使用WorkSheet
ws = wb.WorkSheet(1) # 选中第一张工作表
ws = wb.WorkSheet("Sheet1") # 选中名为“Sheet1”的工作表
# 使用Sheets
ws = wb.Sheets(1)
ws = wb.Sheets('Sheet1')
# 获取sheet的名字
ws.name
# 跨文件复制Sheet
wb1 = xlApp.Open('文件1.xlsx')
wb2 = xlApp.Open('文件2.xlsx')
ws1 = wb1.WorkSheets(1)
ws2 = wb2.WorkSheets(1)
ws1.Copy(None,ws2)
# 实现了把第一个工作簿中的第一个工作表复制到第二个工作簿中,
# 位置在的第一个工作表后
知乎:中文编程,python控制Excel实现跨文件复制Sheet.
ws.Cells(1,1) # 根据行号和列号选中单元格 # Cells可大写可小写
ws.Range(ws.Cells(1,1),ws.Cells(3,3)) # Range必须要大写
ws.Range('A1:D8')
ws.Rows(1) # Rows可大写可小写
ws.Rows('1:2')
ws.Columns(1) # Columns可大写可小写
ws.Columns('A')
# ws.Columns('1:2') # 不可以
ws.Columns('A:B')
ws.Cells(i,j).Font.name # 字体名称属性,可读写
ws.Cells(i,j).Font.Bold # 字体加粗属性,可读写
numformat = '#,##0'
numformat = '#,##0.00'
numformat = '0.00%'
# 通过NumberFormatLocal
ws.Cells(i,j).NumberFormatLocal = numformat
# 通过NumberFormat
ws.Cells(i,j).NumberFormat = numformat
Shift参数参考:XlInsertShiftDirection 枚举 (Excel) | Microsoft Docs
xlPatternNone = -4142 : 无图案
xlPatternDown = -4121:从左上角到右下角的深色对角线
ws.Range("A1:A11").Interior.Pattern = -4142 # 无填充
ws.Cells(i,j).Interior.color = 14277081.0 # 填充相应颜色
Type参数可取值参考链接:XlAutoFillType 枚举 (Excel) | Microsoft Docs
常用:0,填充值与格式;3,填充格式。
ws.Range("A1").AutoFill( Destination = ws.Range("A1:A10"), Type=0)
# 根据第1列第1行的单元格,填充第一列前10行的值与格式
如果destination的区域没有包括填充模板,会报错:
(-2147352567, ‘发生意外。’, (0, None, None, None, 0, -2147024809), None)
Shift参数参考:XlInsertShiftDirection 枚举 (Excel) | Microsoft Docs
-4121:向下移动单元格;-4161:向右移动单元格
ws.Rows(17).Copy() # 如果没有复制行,则插入空行
ws.Rows(18).Insert(Shift=-4121)
copy = ws.Range("A13:S14").Rows.Copy()
ws.Rows(3).Insert(copy)
ws.Range("B19,B23,B26").EntireRow.Hideen = True
ws.Range("C3:S6,C8:S10,C12:S13").ClearContents()
range_used = sht.UsedRange
max_row = range_used.Rows.Count
max_col = range_used.Columns.Count
python+openpyxl 获取最大行数,不是真正想获取的行数,导致替换时,报”NoneType’ object has no attribute ‘find’
重点在于xlApp.ActiveWindow
ws.Cells(2,2).Select() # 选中激活
xlApp.ActiveWindow.FreezePanes = True
这部分内容完全是根据录制的VBA代码来写的
Selection = ws.Range('A2:A18')
Selection.Select()
Selection.FormatConditions.AddDatabar()
Selection.FormatConditions(Selection.FormatConditions.Count).SetFistPriority()
Selection.FormatConditions(1).ShowValue = True # 显示数字
Selection.FormatConditions(1).MinPoint.Modify(newtype=0, newvalue=0) # 设置最小值类型(type)为数字(0),值为1
Selection.FormatConditions(1).MaxPoint.Modify(newtype=0, newvalue=1) # 设置最小值类型(type)为数字(0),值为1
Selection.FormatConditions(1).BarColor.Color = 13012579 # 数据条颜色
Selection.FormatConditions(1).BarColor.TintAndShade = 0 # 色度
Selection.FormatConditions(1).BarFillType = 1 # 填充类型:渐变填充(1)
Selection.FormatConditions(1).Direction = -5002 # 条形图方向
# 数据条边框
Selection.FormatConditions(1).BarBorder.Type = 1 # xlDataBarBorderSolid
Selection.FormatConditions(1).BarBorder.Color.ThemeColor = 5
Selection.FormatConditions(1).BarBorder.Color.TintAndShade = 0
# 负值和坐标轴,一般不设置,默认
Selection.FormatConditions(1).NegativeBarFormat.ColorType = 0 # 负值颜色
Selection.FormatConditions(1).NegativeBarFormat.BorderColorType = 0
Selection.FormatConditions(1).AxisPosition = 0 # 坐标轴
Selection.FormatConditions(1).AxisColor.Color = 0
Selection.FormatConditions(1).AxisColor.TintAndShade = 0.0
Selection.FormatConditions(1).NegativeBarFormat.Color.Color = 255
Selection.FormatConditions(1).NegativeBarFormat.Color.TintAndShade = 0
EXCEL:VBA的对象
pywin32+excel(一)——Python使用win32com/pywin32操作excel
win32com模块的使用 - Z-J-H - 博客园
python使用win32com的心得 - 小西红柿 - 博客园
巧用python win32com模块操作excel文件
win32com操作大全(含常见错误解决办法)
【保存版】win32comでExcel操作をする方法【Python】 | karochoatec.com
Python多线程使用win32com注意事项 ,避免:(-2147221008, ‘尚未调用 CoInitialize。’, None, None)_六十耳顺的博客-CSDN博客
Python多线程使用win32com注意事项 - 杨仕航的博客
email - Send mail in Lotus Notes using python - Stack Overflow
python发送 IBM lotus Notes 邮件 - 夏主 - 博客园
python通过imap批量删除指定发件人的邮件_boyue6973的博客-CSDN博客
Python 收邮件、读邮件、标记已读和删除邮件-逍遥峡谷
Python自动化读取邮件基础代码讲解 - 云+社区 - 腾讯云