Xlwings 技巧随笔
1.app基本设置
#是否可见,是否增加新的工作蒲 app = xw.App(visible=True, add_book=False) #是否进行屏幕更新,关闭后可以提升代码执行速度 app.screen_updating = True
2.打开Excel
wb = app.books.open(path)
3.使用Sheet页
sh = wb.sheets["Sheet1"]
4.获取最大行数
sh.used_range.last_cell.row
5.获取值
#获取A1单元格的值 range("A1").value #获取范围值 range("A1:B2").value
6.关闭,保存,退出
wb.close()
wb.save()
app.quit()
7.写入二维数组
sh.range('A2').expand("table").value = sheet_values
8.清除
#清除数据,保留格式 sh.range('A1:B2').clear_contents() #清除数据及格式 sh.clear()
9.数据刷新
wb.api.RefreshAll()
10.获取Sheet页名称
sheet_names=[] for sheet in wb.sheets: sheet_names.append(sheet.name)
11.新增Sheet
wb.sheets.add(sheet_name)
12.自动调整单元格宽度
sh.api.Columns("A:P").EntireColumn.AutoFit()
13.隐藏Sheet页
sh.visible = False
14.变成数值格式,并保留位数
和直接int或者Round不同的是,变成数值格式不会改变原数值,变成int会省略小数点后的数,使用Round会导致四舍五入
#保留整数 sh.range("U2:U10").api.NumberFormatLocal = "0_);[红色](0)" #保留两位小数 sh.range("V2:V10").api.NumberFormatLocal = "0.00_);[红色](0.00)"
15.更改颜色
sh.range("A1:V1").color =(141, 180, 226)
16.删除Sheet页
sh.delete()
17.下拉公式
#fillRange 的范围必须包含sourceRange sourceRange = turnover_sh.range('G2:V2').api fillRange = turnover_sh.range(f'C2:E{turnover_last_row}').api AutoFillType = 0 sourceRange.AutoFill(fillRange, AutoFillType)
经验,Xlwings找不到对应的功能,在Excel使用宏录制,看VBA的语句,然后调用xw.api使用对应的VBA语句
18.调用公式,保留数值
sht.range().value=app.api.Evaluate("公式")
19.单元格调整格式
range('A1').api.NumberFormat = "@" #设置为文本格式 range('A2').api.NumberFormat = "0.0" #设置为小数格式 range('A3').api.NumberFormat = "yyyy-mm-dd" #设置为"-"连接的日期格式 range('A4').api.NumberFormat = "0%" #设置为百分比
20.公式
sh.range("A3").formula=f"=SUM(A1+A2)"
21.边框
for i in range(7,13): sh.range(f"A1:B2}").api.Borders(i).LineStyle= 1
22.Excel去除筛选
sh.api.AutoFilterMode = False