lihu5841314 发表于 2021-10-14 10:57

python xlwings笔记

importxlwingsas xw   #pipinstallxlwings
#创建应用==》工作簿==》工作表==>工作表==》范围==》保存
#创建应用
app = xw.App(add_book=False)
#1. visible可视化 表示xlwings操作excel的时候是否显示,默认是True
# 2.add_book表示xlwings操作excel的时候是否新增一个Excel文件,默认是true
#app.display_alerts = Flase#关闭提示信息,可以加快运行速度 默认为Ture
#app.screen_updating = Ture#更新显示工作表内容,默认为Ture关闭可以提示运行速度

工作簿
#wb = app.books.add()
#新建工作簿。
# wb = app.books.open(r'file_path)
#打开现有的工作簿
# wb = app.books.active
#获取当前活动的工作簿
工作表
#sht = wb.sheets.active
#获取当前活动的工作表
#sht = wb.sheets
#按索引获取工作表
# sht = wb.sheets ["sheet1']
#按表名获取工作表
# sht1 = wb.sheets.add()
#新建工作表,默认新建的放在最前面。
# sht1 = wb.sheets.add('新建工作表',after=sht) #新建工作表,放在sht工作表后面。
读取单元格
b3 = sht.range("b3") #获取b3中的值
v = b3.value
#也可以根据行列号读取
b3_value = sht.range(3,2).value#读取一段区间内的值
a1_c4_value = sht.range( 'a1: c4').options(ndim=2).value
#加上 option读取二维的数提
a1_c4_value = sht.range((1,1),(4,3)).options(ndim=2) .value#和上面读取的内容一样。
写入就是把值赋值给读取的单元格就可以了
sht.range(3,2).value = "b3"
设置单元格大小
sht.autofit() #自动调整单元格大小。
注:此方法是在单元格写入内容后,再使用,才有效。
#sht.range(1,4).column_width = 5#设置第4列列宽。(1,4)为第1行第4列的单元格sht.range(1,4).row_height = 20设置第1行行高

wb.sheets["Sheet1"].used_range.last_cell.row#获取最大行号(已使用的单元格的)
wb.sheets["Sheet1"].cells(wb.sheets["Sheet1"].sht.cells.rows.count,1).end("up").row # 获取A列最后一个有内容的单元格同 VBA 的 Cells(Rows.Count, 1).End(xlUp).row
wb.sheets["Sheet1"].cells.Rows.Count#获取最大行号
wb.sheets["Sheet1"].used_range.last_cell.column #获取最大列号(已使用的单元格的)
wb.sheets["Sheet1"].cells(1,wb.sheets["Sheet1"].cells.columns.count).end("left").column #获取第一行最后一个有内容的单元格同 VBA 的 Cells(1, Columns.Count).End(xlToLeft).Select
wb.sheets["Sheet1"].cells.columns.Count   #获取最大列号
wb.sheets["Sheet1"].used_range.last_cell #获取最后一个单元格
wb.sheets["Sheet1"].used_range.last_cell.address #获取最后一个单元格的地址
wb.sheets["Sheet1"].api.Rows.Count #调用api返回最大行号,可区分xls和xlsx
wb.sheets["Sheet1"].cells.api.WarpText=Flase #全部单元格取消自动换行
wb.sheets["Sheet1"].cells.autofit(axis=None) #自动调整行高,列宽axis指定行或列
wb.sheets["Sheet1"].cells(wb.sheets["Sheet1"].sht.cells.rows.count,1).end("up").select() # 获取A列最后一个有内容的单元格同 VBA 的 Cells(Rows.Count, 1).End(xlUp).Select
wb.sheets["Sheet1"].cells(1,wb.sheets["Sheet1"].cells.columns.count).end("left").select() #获取第一行最后一个有内容的单元格同 VBA 的 Cells(1, Columns.Count).End(xlToLeft).Select


rng =wb.sheets["Sheet1"].range("A10")
# 下面相当于在Excel中按快捷键
rng.end('up').select() # 相当于 ctrl + ↑
rng.end('down').select() # 相当于 ctrl+ ↓
rng.end('left').select() # 相当于 ctrl+ ←
rng.end('right').select() # 相当于 ctrl+ →


sht['B:B'].delete()# 删除列

sht[:, 1:2].delete()

sht['B2'].delete()# 删除单元格 (缺省默认右侧左移'left',下侧上移'up')

sht['C2:D4'].delete('up') # 删除区域

sht.delete('up')

sht['2:2'].insert()# 插入行

sht['B:B'].insert()# 插入列

sht['B2'].insert()# 插入单元格 (缺省默认'down', 可选 'right')

sht['B2:C3'].insert() # 插入区域

# 或者调用api

sht.api.Rows(2).Delete() # 删除行

sht.api.Rows(1).Insert() # 插入行

sht.api.Rows('2:4').Insert()

sht.api.Columns(1).Delete() # 删除列

sht.api.Columns(1).Insert() # 插入列

sht.api.Columns('2:4').Insert()

sht['2:2'].delete()# 删除行

sht.delete() # 区域切片的方法

#保存
wb.save()

#关闭工作簿和应用
wb.close()
app.quit()

shubiao05 发表于 2021-10-14 12:15

这个学起来,对提高工作效率有莫大的帮助!

xiaoshan1818 发表于 2021-10-14 14:25

复制这个代码,就能产生一个笔记软件?这么神奇?

shubiao 发表于 2021-10-14 14:32

谢谢,分享

df2k 发表于 2021-10-14 15:00

很实用的资料,谢谢整理分享

水鸟 发表于 2021-10-14 15:32

excel的库,只有这最全面好用,其他用了都后悔。

lihu5841314 发表于 2021-10-14 16:14

水鸟 发表于 2021-10-14 15:32
excel的库,只有这最全面好用,其他用了都后悔。

这个和excel对接挺好

huiker231 发表于 2021-10-14 20:03

能说一下作用吗?
我运行了一下,跑不起来
line 4, in <module>
    import xlwingsas xw# pipinstallxlwings
ModuleNotFoundError: No module named 'xlwings'

lihu5841314 发表于 2021-10-15 08:46

huiker231 发表于 2021-10-14 20:03
能说一下作用吗?
我运行了一下,跑不起来
line 4, in


你没有装库

info4 发表于 2021-10-15 19:55

怎么使用?
页: [1] 2
查看完整版本: python xlwings笔记