肛交 零基础学习xlwings,看这篇著述就够了
文爱 电报
发布日期:2024-09-14 18:25 点击次数:206
最近有位小伙伴留言说念念让出一篇相关slwings的著述,这不著述来啦~~~
图片
肛交本篇著述是围绕以下四点带各人学习xlwings。
1、xlwings是什么
2、xlwings装配更新与卸载
3、xlwings详确使用
4、案例共享
xlwings是什么在正常生涯中咱们或多或少的齐会跟Excel打交说念,比如作念销售统计,东说念主力的考勤,学生的闇练收货等等,甚而在某些领域会触及到批量操作Excel表格,那关于违警子员来说,可能使用Excel中的函数,然而在某种场景下这些又是不好使的,只可熬夜加班啦!然而关于法子员来说,可能便是分分钟的事,爽脆科罚。
那在咱们Python中有哪些模块(好像第三方库)不错爽脆处理Excel 呢?给各人列出来学习一下
图片
图片
哇slwings是不是很香,更详确的各人不错去参看意旨干货中的:Python杀死Excel?稠密模块哪家强。
浅薄先容下xlwings,xlwings是一个不错杀青从Excel调用Python,也可在python中调用Excel的库。开源免费,一直在更新。特色:
1)xlwings复古.xls读,复古.xlsx文献读写。
2)复古Excel操作。
3)复古VBA。
4)弥远的更正器不错处理大部分数据类型,包括在两个方进取的numpy array和pandas DataFrame。
文档蚁合:https://docs.xlwings.org/en/stable/index.html
图片
有莫得发现,xlwings主义便是让Excel飞起来!!!
xlwings装配与使用装配
像装配其他模块一样,使用pip装配即可
pip install xlwings
淌若你是在使用Anaconda也不错,使用conda装配
conda install xlwings
请注重,官方的conda软件包可能过期于几个版块。然而,您不错使用conda-forge通说念(淌若依然装配了xlwings,请用upgrade替换装配):
conda install -c conda-forge xlwings
注重:在装配经由中,xlwings亦然有依赖项的,然而依赖项通过conda或pip自动装配
Windows:pywin32
Mac:psutil,appscript
淌若底本装配过,使用如下操作更新
要更新到最新的xlwings版块,请在大呼教唆符中初始以下本色:
pip install --upgrade xlwings
好像:
conda update -c conda-forge xlwings
通过初始以下本色(确保先关闭Excel),确保您的Excel加载项版块与您的Python软件包保捏同步:
xlwings addin install
若要卸载xlwings,移步底下的操作
要完全卸载xlwings,请先卸载加载项,然后使用装配xlwings软件包时使用的疏导法式(pip或conda)卸载xlwings软件包:
xlwings addin remove
然后
pip uninstall xlwings
好像:
conda remove xlwings
终末,手动删除个东说念主文献夹中的.xlwings目次(淌若存在)。
xlwings详确使用在咱们操作之前不错先了解下,如下本色:
新建:创建一个不存在的责任薄好像责任表
大开:大开一个依然存在的责任薄
援用:便是告诉法子,你要操作哪个对象。比如你大开了A、B、C三个责任薄,当今你念念操作A责任薄,就要先援用A
激活:咱们不错同期大开多个责任薄,然而一次只可操作一个责任簿,咱们正在操作的这个责任薄称为**现时动作责任薄。
在xlwings中
Excel法子用App来暗示,多个Excel法子会聚用Apps暗示;
单个责任簿用Book暗示,责任簿会聚用Books暗示;
单个责任表用Sheet暗示,责任表会聚用Sheets暗示;
区域用Range暗示,既不错是一个单位格,也不错是一派单位格区域。
图片
对Excel进行操作东要使用如下三个类:
import xlwings as xw
xw.App 大开一个excel诳骗
xw.Book 创建一个责任薄
xw.Sheet 创建一个责任表
初试:创建一个excel表格并保存
import xlwings as xw# 大开excel,参数visible暗示处理经由是否可视,add_book暗示是否大开新的Excel法子with xw.App(visible=True,add_book=False) as app: # 创建一个责任薄 book = app.books.add() # 责任薄中创建一个sheet表 sht = book.sheets.add() # 向表格的A1单位格写入“Hello Python” sht.range('A1').value = 'Hello Python' # 保存 book.save('./test.xlsx')
解析App
App便是咱们大开的一个Excel诳骗,在咱们法子员看来一个App对象便是一个Excel的实例,在此实例下创建责任薄。因此咱们要创建责任簿,就必须先创建App实例。一个App实例不错创建多个责任簿Book。
使用xlwings不错创建一个好像多个App,而每个App中又不错创建多个责任薄Book,而况多个App之间是相互零丁的。
要使用xlwings就需要先援用该库
import xlwings as xw
引入之后,咱们不错搜检xw下总共的app
Apps = xw.appscount = Apps.countprint(count) # 打印个数是1,是指现时大开的这个app
每个App对应一个PID值,不错看作是数字编号,不错用来识别不同的App。
keys = xw.apps.keys() print(keys) # 打印逼迫[13156],现时只消一个app
创建App
咱们不错通过xw.app()创建一个新的app实例
app=xw.App(visible=True,add_book=False) # 诚然也不错通过app.visible = True建立可见性
其中不错建立参数visible:用来建立法子是否可见,True暗示可见(默许),Flase不能见。add_book用来建立是否自动创建责任簿,True暗示自动创建(默许),False不创建。当建立成add_book=False时,不错创建App,然而还未生成PID,只消当这个App创建了责任簿后,才会生成我方的PID 。
创建效果后不错搜检pid
import xlwings as xwapp=xw.App()pid = app.pidprint(pid) # 6260便是这个App的PID
概括:
import xlwings as xwapp=xw.App()pid = app.pid# 便是这个App的PIDapp1=xw.App()pid1 = app1.pidprint(pid,pid1) # 6260count = xw.apps.countprint(count)print(xw.apps.keys())
逼迫:
图片
不错援用某个app实例进行操作并激活
app = xw.apps[992]app.activate() # 好像app.activate(steal_focus=True)# 当steal_focus=True时, Excel法子变为最前台的诳骗,而况把焦点从Python切换到Excel
在操作一个app对象的技术要先援用责任薄,然而援用并不代表激活,激活便是现时操作的责任薄。
常用的属性有:
app.screen_updating:大开屏幕更新,咱们不错看到xlwings对Excel进行操作的经由,关闭更新不错加快剧本初始。默许是大开的。
app.display_alerts:在使用Excel的经由中,鄙俚会遭遇一些提醒信息,比如关闭前的保存教唆、数据灵验性的警告窗口,若念念覆盖这些窗口不错建立成False。淌若提醒信息是需要响应的,Excel会采选默许的方式True
import xlwings as xwapp = xw.App(visible=False, add_book=False) # 界面建立app.display_alerts = False # 关闭教唆信息app.screen_updating = False # 关闭泄漏更新wb = app.books.add() # 创建新的责任簿sht = wb.sheets['Sheet1'] # 实例化责任表sht.range('A1').value = 'Hello World!'print(sht.range('A1').value) # 读取wb.close()app.kill()
其中关闭app有两种方式,通过测试使用kill()函数更快些。
app.kill():通过杀掉进度,强制Excel app退出app.quit():退出excel法子,不保存任何责任簿
责任簿Book与Books
前边先容了app,而况一个app不错包含多个责任薄,如安在app中创建责任薄呢?
创建Book对象
官方给出的创建责任薄的方式如下:
图片
两种方式的划分:方式1是创建一个新的App,并在新App中新建一个Book,方式2是在现时App下新建一个Book
淌若是大开一个依然存在的则使用:
wb = app.books.open('全齐好像相对旅途的excel文献')'好像wb = xw.Book('全齐好像相对旅途的excel文献')
其中创建Book对象的参数如下:
Book(fullname=None, update_links=None, read_only=None, format=None, password=None, write_res_password=None, ignore_read_only_recommended=None, origin=None, delimiter=None, editable=None, notify=None, converter=None, add_to_mru=None, local=None, corrupt_load=None, impl=None)
详确情况不错参考文档:
https://docs.microsoft.com/zh-cn/office/vba/api/excel.workbooks.open
xw.Book('全齐好像相对旅途的excel文献')既不错大开责任薄也不错援用责任簿。
激活与保存
wb.activate()# 淌若steal_focus=True, 则把窗口泄漏到最表层,而况把焦点从Python切换到Excelwb.activate(steal_focus=True)
保存责任薄:
wb.save() # 好像使用指定旅途保存wb.save('存储旅途')
关闭
关闭责任薄也很浅薄,便是使用wb.close(),注重:wb.close()仅仅关闭并不会保存,是以在关闭之前必须要使用save()进行一下保存才不错。不错接头使用with搭建崎岖文,杀青关闭资源。
import xlwings as xwapp=xw.App(visible=True,add_book=False)app.display_alerts=Falseapp.screen_updating=False# 文献位置:filepath,大开test文档,然后保存,关闭,收尾法子filepath=r'test.xlsx'wb=app.books.open(filepath)wb.save()wb.close()app.quit()
若念念取适应前动作App中的总共books,不错平直通过下列方式
import xlwings as xw# 现时动作App的责任簿会聚books = xw.books# 好像使用app.books取得# books = app.books
责任表Sheet与搜检总共Sheets
新建Sheet
sht = wb.sheets.add()# 好像sht = wb.sheets.add('test',after='sheet2')
参数1为责任表称号,不详的话为Excel默许称号,参数2为插入位置,可选before好像after
若念念援用某一个Sheet,不错通过底下方式
sht = wb.sheets('sheet1') # 指命称号取得sheet责任表
sht = wb.sheets(1) # 凭据序号取得
sht = xw.sheets.active #取适应前动作的责任表
import xlwings as xwapp=xw.App(visible=True,add_book=False)app.display_alerts=Falseapp.screen_updating=False# 文献位置:filepath,大开test文档,然后保存,关闭,收尾法子filepath=r'test.xlsx'wb=app.books.open(filepath)# add()是在现存的sheets会聚列表中追加新的Sheetsht1 = wb.sheets.add()sht2 = wb.sheets.add()print(wb.sheets.count)sht3 = wb.sheets(1)# sht1.activate()sht3.range('A1').value = 'Hello Running'wb.save('test1.xlsx')wb.close()app.quit()图片
sheet对象不错调用的法式有:
sheet.activate sheet.charts sheet.index sheet.api sheet.clear sheet.name sheet.autofit sheet.clear_contents sheet.names sheet.book sheet.delete sheet.pictures sheet.cells sheet.impl sheet.range ......
常用的有:
# 打消责任表总共本色和形态sht.clear()# 打消责任表的总共本色然而保留原有形态sht.clear_contents()# 删除责任表sht.delete()# 自动调治行高列宽sht.autofit('c')# 在动作责任簿中采选sht.select()
不错通过属性取得取得责任表的称号、总共单位格的区域对象、现时责任表的索引值
sht.name sht.cells sht.index sht.names
援用区域与单位格操作
在操作区域好像单位格之前,最初就要援用他们,其实便是标明你要操作的区域好像单位格是哪些。不错以为区域是多个单位格。
播色网援用区域的方式有许多种,底下列举一下常见的援用方式:
xw.Range('A1:D4')xw.Range((1,1), (4,4))xw.Range(xw.Range('A1'),xw.Range('D4'))xw.Range(xw.Range('A1:E6'),xw.Range('C3:D7'))xw.Range('NamedRange')app.range("A1") # 注重是小写的rangesht.range('A1') xw.books['MyBook.xlsx'].sheets[0].range('A1')sht['A1']sht['A1:D4']sht[0,5]sht[:5,:5]
区域不竭不错通过如下方式:
range.offset(row_offset=5,column_offset=2) 暗示偏移,row_offset行偏移量(正数暗示向下偏移,负数违犯),column_offset列偏移量(正数暗示向右偏移,负数违犯)
注重:是将选区领域进行偏移,本色不进行偏移
range.expand(mode='down') 膨胀区域,参数可中式 'down' , 'right' ,'table' ,雷同咱们使用向下、向右好像下右方的区域膨胀操作。
range.resize(row_size=4, column_size=2) 暗示调治选中区域的大小,参数暗示调治后区域的行、列的数目。
range.current_region 暗示全选 雷同Ctrl + A
对区域或单位格进行操作:
1)存储数据
储存单个值# ".value“属性sht.range('A1').value=1储存列表# 将列表[1,2,3]储存在A1:C1中sht.range('A1').value=[1,2,3]# 将列表[1,2,3]储存在A1:A3中sht.range('A1').options(transpose=True).value=[1,2,3]# 将2x2表格,即二维数组,储存在A1:B2中,如第一溜1,2,第二行3,4sht.range('A1').options(expand='table').value=[[1,2],[3,4]]
2)读取数据
读取单个值# 将A1的值,读取到a变量中a=sht.range('A1').value将值读取到列表中#将A1到A2的值,读取到a列表中a=sht.range('A1:A2').value# 将第一溜和第二行的数据按二维数组的方式读取a=sht.range('A1:B2').value
3)打消与删除
# 打消range的本色rng.clear_contents()# 打消形态和本色rng.clear()# 删除rng.delete(shift=None)
4)其他建立
# 取得数字形态rng.number_format# 建立数字形态rng.number_format = '0.00%'rng.insert(shift=None, copy_origin='format_from_left_or_above')# 复返区域第一溜的行号rng.row# 复返区域的第一列的号,注重复返的列号不是ABCD,而是1234rng.column# 取得行高 好像建立行高rng.row_height rng.row_height = 20# 取得列宽或建立列宽rng.column_widthrng.column_width = 20# 自相宜行高列宽rng.autofit()rng.columns.autofit()rng.rows.autofit()# 统一单位格rng.merge(across=False)rng.merge_area # 复返统一单位格区域rng.merge_cells # 复返True好像False,测试是否在统一单位格区域rng.unmerge() # 取消单位格统一# 背自得rng.color # 取得指定区域的背自得xw.Range('A1').color = (255,255,255) # 建立背自得xw.Range('A2').color = None # 去除背自得图片
其他参考
range.add_hyperlink range.clear_contents range.count range.address range.color range.current_region range.api range.column range.end range.autofit range.column_width range.expand range.clear range.columns range.formula...等等
range.add_hyperlink('https://www.baidu.com','百度')
range.color = (128,128,128) RGB通说念神志,可取得or建立
range.row/column 取得第几行/列,注重是第几而不是下标
range.formula 不错建立计较抒发式,用来进行表内计较
range.current_region 复返现时range场所区域的区域抒发,这个比拟难姿色,好比一个Excel中相互伙同的单位格齐是连城一派,两个片之间莫得任何相邻便是相互零丁的。
range.count 复返这个range中共有若干单位格,统一单位格仍然按未统一的算
range.offset(a,b) 取得到现时range向右a格,向下迁移b格相通大小的那片区域,ab不错为负值
range.rows/columns 复返行/列的各个range对象
range.expand
参考案例代码:1)批量写入并读取数据
import xlwings as xwwb = xw.Book()sht = wb.sheets.active# 向责任表中写入行列值for i in range(1, 6): for j in range(1, 6): sht.range(i, j).value = '({}, {})'.format(i, j)print(sht.range((1, 1), (5, 5)).expand().value) # 批量读取print(sht.range(1, 1).expand('right').value) # 按行读print(sht.range(1, 1).expand('down').value) # 按列读wb.close()
图片
2)提前建立好表格的神志,如图
图片
import xlwings as xwfrom itertools import productapp = xw.App(visible=False) # 覆盖Excelwb = app.books.open('test.xlsx') # 大开责任簿sht = wb.sheets['Sheet1'] # 实例化责任表for cell in list(map(''.join, product('ABCDEFGH', '1'))): # A1 B1 C1 D1 E1 F1 G1 H1 print(cell, sht.range(cell).color) # 填充神志wb.close()
3)局中插入图片
图片
import osimport xlwings as xwwb = xw.Book()sht = wb.sheets['Sheet1']rng = sht.range('A1')fileName = os.path.join(os.getcwd(), 'aa.png')width, height = 120, 100 # 指定图片大小left = rng.left + (rng.width - width) / 2 # 居中top = rng.top + (rng.height - height) / 2sht.pictures.add(fileName, left=left, top=top, width=width, height=height)wb.save('test2.xlsx')wb.close()概括案例:
import xlwings as xwwb = xw.Book()sht = wb.sheets[0]info_list = [['110202111111234','帐篷',5],['110202111118891','行李箱','16'],['110202111111004','微波炉','20'],['110202111132741','电雪柜','13'],['110202111109852','乐事薯片','30'],['110202111112030','鲁花花生油','12'],['110202111190391','羽绒服','9'],['110202111122319','防晒霜','18'], ]# 写入表头titles = [['商品编号','商品称号','数目']]sht.range('a1').value = titles# 写入数据sht.range('a2').value = info_list# 保存数据wb.save('goods.xlsx')图片
图片
若念念更新内部的数据,由于有些商品被卖出,商品数目就会发生变化。另外还有一批货是新引入的。参考代码如下:
import xlwings as xwwb = xw.Book()sht = wb.sheets[0]info_list = [['110202111111234','帐篷','5'],['110202111118891','行李箱','16'],['110202111111004','微波炉','20'],['110202111132741','电雪柜','13'],['110202111109852','乐事薯片','30'],['110202111112030','鲁花花生油','12'],['110202111190391','羽绒服','9'],['110202111122319','防晒霜','18'], ]# 写入表头titles = [['商品编号','商品称号','数目']]sht.range('a1').value = titles# 写入数据sht.range('a2').value = info_list# 保存数据wb.save('goods.xlsx')# 读取数据goods_list = sht.range('a2').expand('table').valuefor goods in goods_list: goods[0] = str(int(goods[0])) goods[2] = int(goods[2])print(goods_list)new_info = [['110202111111234','帐篷',5],['110202111118891','行李箱',16],['110202111111004','微波炉',20],['110202111132741','电雪柜',10],['110202111124660','羊毛衫',8],['110202111109852','乐事薯片',10],['110202111112030','鲁花花生油',12],['110202111190391','羽绒服',0],['110202111122319','防晒霜',9],['110202111124560','牛仔裤',18],['110202111134798','老爹鞋',11]]# 去重extra = [i for i in new_info if i not in goods_list]# print(extra)# 读取extra每个商品的包裹号,判断是否存在并更新,然后添加ids = sht.range(2, 1).expand('down').valueids = [str(int(id)) for id in ids]rows = len(sht.range('a2').expand('table').value)# 更新已罕有据的库存for goods in extra: if goods[0] in ids: row_number = ids.index(goods[0]) print(row_number,goods[1]) sht[row_number+1,2].value = goods[2] else: for i in range(3): sht[rows+1,i].value =goods[i] rows+=1wb.save('goods.xlsx')图片
逼迫:
图片
本站仅提供存储就业,总共本色均由用户发布,如发现存害或侵权本色,请点击举报。