百家汽车网
您的当前位置:首页python--Excel模块xlwings

python--Excel模块xlwings

来源:百家汽车网
python--Excel模块xlwings

安装:pip install xlwings 基本操作:xlwings的特⾊:

xlwings能够⾮常⽅便的读写Excel⽂件中的数据,并且能够进⾏单元格格式的修改可以和matplotlib以及pandas⽆缝连接

可以调⽤Excel⽂件中VBA写好的程序,也可以让VBA调⽤⽤Python写的程序。开源免费,⼀直在更新

【能读出公式计算的值】

新建⼯作簿:

import xlwings as xw

app = xw.App(visible=True,add_book=False) #创建应⽤

#visible=True 显⽰Excel⼯作簿;False 不显⽰⼯作簿

#add_book=False 不再新建⼀个⼯作簿;True 另外再新建⼀个⼯作簿

wb = app.books.add() #新建⼯作簿sh1=xw.books.active #引⽤活动⼯作薄wb.activate() #激活为当前⼯作簿

打开已有⼯作簿:

⽅式⼀:

import xlwings as xw

app = xw.App(visible=True,add_book=False)

wb = app.books.open('D:\\sample.xlsx') #读⼊已有⼯作簿⽅式⼆:

import xlwings as xw

wb = xw.Book('D:\\sample.xlsx') #读⼊已有⼯作簿

#⼯作簿不显⽰

保存⼯作簿:

import xlwings as xw

wb = xw.Book('D:\\sample.xlsx')

wb.save('D:\\samplelm.xlsx') #保存⼯作簿参数可以省略:⼯作簿的原路径或脚本所在的路径

退出和关闭:

import xlwings as xw

app = xw.App(visible=True,add_book=False)wb = app.books.open('D:\\sample.xlsx')

wb.close() #关闭⼯作簿(程序不能编辑了)----显⽰的⽂件不关闭app.quit() #退出应⽤---显⽰的⽂件也关闭

⼯作表操作:

import xlwings as xw

app = xw.App(visible=True,add_book=False)wb = app.books.open('D:\\sample.xlsx')

sht = wb.sheets[0] #引⽤⼯作表

#参数:⼯作表序号

sht1 = wb.sheets['物理'] #引⽤⼯作表

#参数:⼯作表名称

sht=xw.sheets.active #引⽤活动sheet

print(sht)print(sht1)wb.close() app.quit()

sht.clear() # 清除sheet的内容和格式a=sht.name #返回表格名称

sht.delete # 删除sheet----[没有删除啊 ]

单元格操作:

import xlwings as xw

app = xw.App(visible=True,add_book=False)wb = app.books.open('D:\\sample.xlsx')sht = wb.sheets[0]

rng = sht.range('a1') #引⽤单元格---⽅式⼀

##参数:可以⼤写,可以⼩写

rng = sht['b1'] #引⽤单元格---⽅式⼆

rng = sht[0,0] #引⽤单元格---⽅式三--第⼀⾏的第⼀列即a1rng=xw.Range('c1') #引⽤活动sheet上的单元格

#注意Range⾸字母⼤写print(rng)wb.close()app.quit()

rng = sht.range('a1:a5') #引⽤区域---⽅式⼀

#

rng = sht['a1:b5'] #引⽤区域---⽅式⼆

##rng = sht[:5,0] #引⽤区域---⽅式三---rng = sht.range('a1')

rng.value=10 #单元格赋值

rng = sht.range('b1')

rng.value='abcd' #单元格赋值

sht.range('c1').value = [1,2,3,4] #按⾏插⼊

#从单元格c1开始,按⾏依次插⼊数据

sht.range('a1:d4').value = [10,20,30,40] #指定区域插⼊数据---按⾏sht.range('a2').options(transpose=True).value = [5, 6, 7, 8] #按列插⼊

#从单元格a2开始,按列依次插⼊数据

#既然默认的是按⾏写⼊,我们就把它倒过来嘛(transpose),单词要打对,如果你打错单词,它不会报错,⽽会按默认的⾏来写⼊

sht.range('a6').expand('table').value = [['a','b','c'],['d','e','f'],['g','h','i']] #区域赋值

#从单元格a6开始赋值

#['a','b','c'] 是⼀⾏;['d','e','f']是⼀⾏

L=sht.range('a1:d4').value #读取A1:D4区域的值

原表格数据:

返回值:

返回值是列表,每⼀⾏是⼀个列表

返回的数值默认是浮点数

rng=sht['d2']

a=rng.value #返回指定单元格的值

rng = sht.range('a1')

rng.add_hyperlink(r'www.baidu.com','百度','提⽰:点击即链接到百度') # 指定单元格加⼊超链接a=rng.hyperlink #获得range的超链接

#http://www.baidu.com/

rng = sht.range('b6')

rng.formula='=SUM(B1:B5)' #输⼊公式a=rng.formula #获取公式

#=SUM(B1:B5)

a=rng.get_address(row_absolute=True, column_absolute=True,include_sheetname=False, external=False) # 获得单元格的绝对地址

# $B$6

其它操作:

a=wb.fullname #返回⼯作簿的绝对路径

#D:\\sample.xlsx

a=wb.name #返回⼯作簿的名称

#sample.xlsx

sht.activate() # 激活sheet为活动⼯作表

sht = wb.sheets[0]rng = sht.range('a1')

a=rng.address #取得当前range的地址--$A$1

rng = sht.range('a1:c1')

a=rng.address #取得当前range的地址--$A$1:$C$1a=rng.get_address() #与rng.address相同rng.clear_contents() # 清除range的内容rng.clear() # 清除格式和内容

sht = wb.sheets[0]rng = sht.range('a1')

rng.color=(255,0,0) # 设置range的背景颜⾊

rng = sht.range('b1')rng.color=(0,0,255)

a = rng.color # 取得range的背景⾊,以元组形式返回RGB值

#(255, 0, 0)

rng.color=None # 清除range的背景⾊

sht = wb.sheets[0]rng = sht.range('c2:g4')

a=rng.column #获得range的第⼀列列标

#从A列是1

a=rng.count #返回range中单元格的格数

a=rng.row # 返回range的第⼀⾏⾏标

rng = sht.range('b2:g4')

a=rng.last_cell #获得range中右下⾓最后⼀个单元格

#

rng = sht.range('b6:c1')

a=rng.width # 返回range的总宽度

rng = sht.range('b6')

a=rng.column_width # 获得列宽

sht = wb.sheets[0]rng = sht.range('b2:g4')

a=rng.row_height # ⾏的⾼度,所有⾏⼀样⾼返回⾏⾼,不⼀样返回Nonea=rng.height # 返回range的总⾼度

a=rng.shape # 返回range的⾏数和列数---(3, 6)a=rng.sheet # 返回range所在的sheet

#

a=rng.rows #返回range的所有⾏

for i in a: print(i)

# # #

a=rng.rows[0] # range的第⼀⾏

#

a=rng.rows.count # range的总⾏数a=rng.columns # 返回range的所有列

for i in a: print(i)

# # # # #

rng = sht.range('b2:g4')

a=rng.columns[0] # 返回range的第⼀列

#

a=rng.columns.count # 返回range的列数rng.autofit() # 所有range的⼤⼩⾃适应rng.columns.autofit() # 所有列宽度⾃适应rng.rows.autofit() # 所有⾏⾼⾃适应

因篇幅问题不能全部显示,请点此查看更多更全内容