用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()