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

 

posted @ 2022-04-19 11:54  日天达人  阅读(319)  评论(0编辑  收藏  举报