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
上一篇: Java Arrays工具类用法详解
下一篇: MySQL运行状况查询方式介绍