欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

Python操作xlwings

程序员文章站 2024-02-23 19:34:58
...

xlwings的安装
xlwings库使用pip安装:
在控制台输入 pip install xlwings

工作簿操作

# coding = UTF-8

导入所需的第三方模块

import xlwings as xw

关闭警告、屏幕刷新

app.display_alerts=False
app.screen_updating=False

方法1 新建test2.xlsx

app_visible=True打开excel程序窗口,可见,

add_book = True新建工作簿

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

方法2 新建test2.xlsx

app = xw.App(visible= True, add_book= False)
wb = app.books.add(name=None,before=None,after=None)

#保存,关闭,退出excel

wb.save(r'F:\test2.xls')
wb.close()
app.quit()

打开已有工作簿

path=r'F:\test.xlsx'
wb = app.books.open(path)

返回工作簿绝对路径F:\test.xlsx

print(wb.fullname)

#返回工作簿名字test.xlsx

print(wb.name)

#显示当前工作簿中所有表单

wb.sheets

#获取工作簿中表单个数

nSheets = wb.sheets.count

#引用第i个表单

ws = wb.sheets[i]

工作表操作

#获取工作表名称

sheets集合下标从0开始,即第一张表为sheets[0],这里test2的第一个工作表名称:Sheet1

sht = wb.sheets[0]

或者

sht = wb.sheets['Sheet1']
print(sht) #返回工作表全称:Sheet [test2.xls]Sheet1
print(sht.name) #返回工作表名称:Sheet1

修改工作表名称

获取当前表

ws = wb.sheets.active

当前表名修改为表格1

ws.name='表格1'

也可以指定某张表,修改名称

ws = wb.sheets[2]
ws.name='表格1'

引用工作表(指定工作表)

sht=xw.books['test2'].sheets['sheet1']

**sheet1为活动工作表

sht.activate()

清除sheet1的内容和格式

sht.clear()

清除sheet1的内容

sht.contents()

删除工作表sheet1

sht.delete

行列操作

sht.api.rows(1).delete #删除首行
sht.api.columns(1).delete# 删除首列
sht.api.columns(1).insert #插入列
sht.api.rows(1).insert #插入行

#在第二行前插入3行空白行

sht.api.rows('2:4').insert

#删除第2-4行

sht.api.rows('2:4').delete

获取当前表有效数据最大行、列数

ws = wb.sheets.active
rows = ws.api.UsedRange.Rows.count
cols = ws.api.UsedRange.Columns.count

#操作单元格range

#引用单元格(指定单元格)

rng=sht.Range('A1')

#或者

rng = sht['A1']

#或者

rng = sht[0,0] #第一行的第一列即A1,注意,下标从0开始

#引用单元格区域

rng = sht.range('A1:A5')

#或者

rng = sht['A1:A5']

#或者

rng = sht[:5,0]

将列表内容赋值给单元格

arr = ['1','2','3']
sht.range('A1:A3').value=arr

以上赋值给A1:A3,但实际是自动填充行C1:C3

#写入单元格A1:C1内容

sht.range('A1').value=[1,2,3] 

读取单元格A1的内容

print(sht.range('A1').value)

清除单元表内容和格式

sht.range('A1').clear()

#获取单元格列标

sht.range('A1').column   
sht.range('A1').columns   # 返回单元格绝对地址RangeColumns(<Range [test2.xls]Sheet1!$A$1>)

#获取行标

sht.range('A1').row
sht.range('A1').rows #返回单元格绝对地址RangeRows(<Range [test2.xls]Sheet1!$A$1>)

#获取列宽

sht.range('A1').column_width

#获取行高

sht.range('A1').row_height 

#行高自适应

sht.range('A1').rows.autofit()  

#列宽自适应

sht.range('A1').columns.autofit()

#给单元格A1设置背景色

sht.range('A1').color=(34,156,65)  

#返回单元格颜色的RGB值

sht.range('A1').color  
print(sht.range('A1').color)

#清除单元格颜色

sht.range('A1').color = None  
print(sht.range('A1').color)

#输入公式,获取相应单元格执行结果

sht.range('B6').formula='=SUM(B2:B5)'   

#获取单元格公式

sht.range('A1').formula_array   

#获取A列A1:A10的全部内容

for i in range(1,11):
    print(sht.range("A"+str(i)).value)

#获取A1-E1所有的内容

for j in ("A","B","C","D","E"):
      print(sht.range(j+str(1)).value)

#读取excel单列值到列表中2007版本以下:A65536,以上:A1048576

lst=sht.range('A1:A'+str(sht[' A1048576'].end('up').row)).value 
相关标签: python