用xlwings做了几个项目,总结些个人常用的方法
e n v env env: → \rightarrow x l s i n g s : xlsings: xlsings: 0.22.2

创建可视的excel app

import xlwings as xw
app = xw.App(visible=True, add_book=False)
app.display_alerts = False
app.screen_updating = True
wb = app.books.open(r'C:\Users\testing\testing.xlsx')
# 激活sheet对象,实例化testing.xlsx内的Sheet1
sht = wb.sheets['Sheet1']

r a n g e 方法 range方法 range方法

写入数据

为A2(特定某一个)单元格赋值
sht.range(‘A2’).value = 1

在A2处写入列表(若参数为True,列表纵向写入)
sht.range(‘A2’).options(transpose=False).value = [1,2,3]

在A2处写入(去除index和header的)DataFrame
sht.range(‘A2’).options(pd.DataFrame, index=False, header=False).value = df

在A2处写入公式
sht.range(‘A2’).formula = ‘=SUM(B2:C2)’

将A2处的内容复制至A4
sht.range(‘A2’).copy()
sht.range(‘A4’).paste()

在A2处写入工作表跳转链接(显示testing,链接至file的Sheet2工作表)
sht.api.Hyperlinks.Add(Anchor=sht.range(‘A2’).api, Address=‘’, SubAddress=“‘Sheet2’!A1”, ScreenTip=‘’, TextToDisplay=‘testing’)


单元格属性的设置/参数的获取

合并单元格A2~D4
sht.range(‘A2:D4’).merge()

取消合并A2处单元格
sht.range(‘A2’).unmerge()

清除A2~D4处的内容和格式
sht.range(‘A2:D4’).clear()

清除A2~D4处的内容,但保留格式sht.range(‘A2:D4’).clear_contents()

设置单元格A2格式为General
sht.range(‘A2’).number_format = ‘General’


行/列操作

获取第20行的行高
height = sht.range(‘20’).api.RowHeight

获取第20列的列宽
width = sht.range(‘20’).api.ColumnWidth

隐藏第20~25行
sht.range(‘20:25’).api.EntireRow.Hidden = True

隐藏第20~25列
sht.range(‘20:25’).api.EntireColumn.Hidden = True

删除第20~25行
sht.range(‘20:25’).api.EntireRow.Delete()

删除第20~25列
sht.range(‘20:25’).api.EntireColumn.Delete()

检测单元格A1所在的行共使用了多少列
used_col_num = sht.range('A1).end(‘right’).column

检测单元格A1所在的列共使用了多少行
used_row_num = sht.range('A1).end(‘right’).row

s h e e t 方法 sheet方法 sheet方法

新建一个名为new_sht的工作表
wb.sheets.add(‘new_sht’)

复制Sheet1,将其拷贝命名为Sht_1_copy(该工作表内所有内容都与原表一致)
wb.sheets[‘Sheet_1’].copy(name=‘Sht_1_copy’)

删除工作表Sheet1
wb.sheets[‘Sheet1’].delete()

行高列宽自适应
sht.autofit(‘rows’) 或 sht.autofit(‘r’)
sht.autofit(‘columns’) 或 sht.autofit(‘c’)
sht.autofit()

更多推荐

『Python - Xlwings』Excel报表自动化中常用函数/方法