[Python]xlwings的应用
程序员文章站
2024-02-23 17:52:28
...
xlwings的应用
打开应用
xw_app=xlwings.App(args)
- visible:True/False 程序可见/隐藏
- add_book:True/False 是否新建工作簿
xw_app=xlwings.App(visible=False) #打开应用并设置后台运行
打开文件
fileName='test.xlsx'
xw_book=xlwings.Book(fileName) #得到工作簿
xw_sheet=xlwings.Book(fileName).sheets[name] #得到工作表
得到最后一列
#光标在第row行第col列的位置向右移到最后一列(等效于Ctrl+→),获取位置并拆分
last_col=xw_sheet.range(row, col).end('right').get_address().split('$')[1]
得到最后一行
#光标在第row行第col列的位置向下移到最后一行(等效于Ctrl + ↓),获取位置并拆分
last_row=xw_sheet.range(row, col).end('down').get_address().split('$')[1]
单元格替换
xw_sheet.range(‘A1:B5’).api.Replace(args)
- What:’’ 查询的值
- Replacement:’’ 替换的值
- LookAt:1/0 完全匹配/部分匹配
- MatchCase:True/False 是否区分大小写
#把区域内的0替换为1,完全匹配单元格,区分大小写
xw_sheet.range('A1:B5').api.Replace(What='0',Replacement='1',LookAt=1,MatchCase=True)
单元格赋值
Excel公式
当前单元格的上一行单元格位置
func='INDIRECT(SUBSTITUTE(ADDRESS(1,COLUMN(),4),1,"")&"2:"&SUBSTITUTE(ADDRESS(1,COLUMN(),4),1,"")&ROW()-1)'
- 返回当前列名
SUBSTITUTE(ADDRESS(1,COLUMN(),4),1,"")
- 返回当前行名
ROW()
- 把字符串格式的range转引用
INDIRECT("A1:A2")
为区域统一赋上公式
xw_sheet.range('A1:A5').value = '=sum('+func+')'
添加背景色
xw_sheet.range('A1:A5').color=(255,255,0)
设置字体格式
xw_sheet.range('A1:A5').api.Font.Bold=True #加粗
xw_sheet.range('A1:A5').api.Font.Name = '微软雅黑' #设置字体
xw_sheet.range('A1:A5').api.Font.Size = 20 # 设置字号
xw_sheet.range('A1:A5').api.Font.Color = 0x0000ff #设置颜色
设置对齐格式
HorizontalAlignment | 参数 | VerticalAlignment | 参数 |
---|---|---|---|
居中对齐 | -4108 | 居中对齐 | -4108 |
左对齐 | -4131 | 顶部对齐 | -4160 |
右对齐 | -4152 | 底部对齐 | -4107 |
自动换行对齐 | -4130 |
xw_sheet.range('A1:A5').api.HorizontalAlignment = -4108 #设置区域水平居中对齐
添加边框
Borders | 参数 | LineStyle | 参数 | weight | 参数 |
---|---|---|---|---|---|
左上右下对角线 | 5 | 实线 | 1 | 边框粗细 | int |
左下右上对角线 | 6 | 虚线 | 2 | ||
左边框 | 7 | 点划线 | 4 | ||
上边框 | 8 | 双点划线 | 5 | ||
下边框 | 9 | ||||
右边框 | 10 | ||||
内纵边框 | 11 | ||||
内横边框 | 12 |
xw_sheet.range('A1:A5').api.Borders(8).LineStyle = 1 #为区域添加上边框实线
设置行列宽度
xw_sheet.range('A1:A5').columns.autofit() #自动调整区域列宽
xw_sheet.range('A1:A5').rows.autofit() #自动调整区域行宽
xw_sheet.range('A1:A5').column_width=10 # 设置固定列宽值
xw_sheet.range('A1:A5').row_height=10 # 设置固定行宽值
保存文件
xw_book.save('new'+fileName) #保存工作簿
关闭资源
xw_book.close() #关闭工作簿
xw_app.quit() #关闭应用