Python Xlwings
程序员文章站
2024-02-23 18:35:28
...
Python Xlwings
对App进行操作
app=xw.App()
wb=app.books.open(r'C:\Users\Administrator\Desktop\1test.xlsm')
# 1.打开Excel
app=xw.App(visible=True,add_book=False)
# visible是否可见,False表示在后台运行,add_book是否新增一张Excel操作,在新增wb上运行
# 2.对excel操作时候屏幕是否更新
app.screen_updating=True #默认True
# 3.返回所有book对象集合
print(app.books) #只返回通过xw打开的workbook,手动打开的不返回
# 4.退出excel
app.kill() #终止进程
app.quit() #退出excel程序
对workbook进行操作
#对workbook进行操作
#1.打开workbook
#1.1 添加一个新的空白wb
xw.Book()
app=xw.App()
app.books.add()
#1.2 打开指定地址的excel
xw.Book(r'C:\Users\Administrator\Desktop\1.xlsx')
app=xw.App()
app.books.open(r'C:\Users\Administrator\Desktop\1.xlsx')
#2.python调用vba
wb=xw.Book(r'C:\Users\Administrator\Desktop\1test.xlsm')
wb.macro('test')() #调用
#3.在vba中调用python
#caller()函数是python与vba交互的关键函数
#caller()当vba从excel中调用python函数时,引用这个book,还会将其打包成excel中的函数
#栗子
#将栗子保存为test.py,与excel在同一个目录下
import xlwings as xw
#需求A1赋值为helloworld
def insert_a1():
wb=xw.Book.caller()
wb.sheets[0].range('a1').value='Helloworld'
#在vba中写入
sub test()
runpython ("import test; test.insert_a1()")
end sub
#4.关闭wk
wb.save(path=None) #可以指定path为保存的位置
wb.close()
#5.查看路径+文件名称
app=xw.App()
wb=app.books.open(r'C:\Users\Administrator\Desktop\1.xlsx')
print(wb.fullname)
#6.set_mock_caller直接在python IDE内运行要与vba交互的py文件
# import xlwings as xw
# def test():
# wb=xw.Book.caller()
# wb.sheets[0].range('a1').value='Hello xlwings'
#
# if __name__ == '__main__':
# xw.Book(r'C:\Users\Administrator\Desktop\1test.xlsm').set_mock_caller()
# test()
对worksheet进行操作
# app=xw.App()
# wb=app.books.open(r'C:\Users\Administrator\Desktop\1test.xlsm')
# sht=wb.sheets[0]
#1.sheets返回所有的工作表
# print(wb.sheets)
#2.active返回正在被操作的sht,
# sht=wb.sheets[0]
# print(sht.activate)
#3.add(name=None,before=None,after=None)添加sht
# wb.sheets.add(name='hello_xlwings')
#4.autofit(axis=None)自动调整行和列
#栗子
# import xlwings as xw
# wb=xw.Book()
# wb.sheets[0].range('a1').value='hello xlwings' #对第一张表a1赋值
# wb.sheets[0].autofit('c') #columns=c
# wb.sheets[0].autofit('r') #rows=r
# wb.sheets[0].autofit()
#5.book sht所属的workbook
# sht=wb.sheets[0]
# print(sht.book) #属于workbook<Book [1test.xlsm]>
#6.cells返回一个range对象,表示sheet上的所有单元格
# print(sht.cells)
# print(sht.cells.shape)
#7.charts返回sheet中所有图标的集合
# print(sht.charts)
#8.clear()
# print(sht.clear()) #清除内容颜色格式...
#9.clear_contents()
# print(sht.clear_contents()) #清除内容
#10.delete() 删除sheet
# sht.delete()
#11.pictures 返回所有pictures对象的集合
# print(sht.pictures)
#12.index 返回工作表的索引
# print(sht.index) #第一个为1
#13.name,sheet name的操作
# print(sht.name) #获得sht的名字
# sht.name='xlwingstest' #修改sht的名字
# print(sht.name)
对range的操作
# app=xw.App()
# wb=app.books.open(r'C:\Users\Administrator\Desktop\1test.xlsm')
# sht=wb.sheets[0]
#1.add_hyperlink(address,text_to_display=None,screen_tip=None)添加超链接
# sht.range('a1').add_hyperlink(address='www.baidu.com',text_to_display='百度',screen_tip='我是百度哦')
#2.clear()删除range里面的内容和格式
#3.clear_contents()删除内容
#4.color获取单元格的背景颜色
# print(sht.range('a1').color) #没有颜色的时候返回None
# sht.range('a1').color=(100,100,100) #设置颜色
# print(sht.range('a1').color)
#5.column返回range的列
#6.column_width获取单元格的列宽
# print(sht.range('a1').column_width) #获取宽度
# sht.range('a1').column_width=33 #设置宽度
# print(sht.range('a1').column_width)
#7.columns返回RangeColumns对象,表示指定范围内的列
# print(sht.range('a1:c3').columns)
#8.count返回单元格数量
#9.end(direction),返回一个range对象,类似Ctrl+Up(down,left,right)
# print(sht.range('a1:a65536').end('down').row+1) #返回最后有值一行,需要+1
#10.formula 获取设置单元格的公式
# sht.range('a1').formula='=b1+c1' #设置
# # print(sht.range('a1').formula) #获取
#11.formula_array 获取设置单元格的数组公式
# sht.range('a1').formula_array='=b1+c1' #设置
# print(sht.range('a1').formula_array) #获取的值并没有{}包裹
#12.get_address(row_absolute=True,column_absolute=True,include_sheetname=False,external=False)返回地址
#13.height返回高度 row_height
# print(sht.range('a1').height) #获取行高
# sht.range('a1').row_height=33 #设置行高
# print(sht.range('a1').row_height) #获取行高
#14.hyperlink返回地址
#15.last_cell返回指定range右下角的单元格
#16.left返回从第一列到range第一列的距离
#17.name设置获取range的名称
#18.number_format获取设置range的内容格式
#19.offset(row_offset=0,column_offset=0)
# rng=sht.range('a1:c3')
# rng=rng.offset(row_offset=2,column_offset=2)
# print(rng) #返回偏移后的array c3:e5
#20.options(convert=None,)...
#21.raw_value获取设置传递的值
#22.row返回行
#23.row_height 在上方height的时候已经举栗子
#24.rows返回rangerows
#25.select()
#26.shape返回几行几列
#27.size返回range中元素数量
# print(sht.range('a1:d100').size) #有400个cell
#28.top返回第一行到range第一行的距离
#29.value获取设置range的值
# sht.range('a1').value='123'
# print(sht.range('a1').value)
#30.width 返回range宽度
上一篇: linux下安装升级mysql到新版本(5.1-5.7)
下一篇: python枚举遇到的一个坑