python xlwings 切片_Python xlwings库学习笔记(1)

本文是Python xlwings库的学习笔记,介绍了xlwings支持.xls和.xlsx文件的读写,以及与Excel的交互功能,包括VBA支持。与其他库对比后,强调了xlwings在处理特定格式数据时的优势。文章还展示了如何导入库、打开Excel、创建工作簿、选定单元格等基本操作。
摘要由CSDN通过智能技术生成

Python xlwings库学习笔记(1)

Python是最近几年很火的编程语言,被办公自动化的宣传吸引入坑,办公自动化必然绕不开Excel的操作,能操作Excel的库有很多,例如:

xlrd

xlrd是一个从Excel文件读取数据和格式化信息的库,支持.xls以及.xlsx文件。

1、xlrd支持.xls,.xlsx文件的读

2、通过设置on_demand变量使open_workbook()函数只加载那些需要的sheet,从而节省时间和内存(该方法对.xlsx文件无效)。

3、xlrd.Book对象有一个unload_sheet方法,它将从内存中卸载工作表,由工作表索引或工作表名称指定(该方法对.xlsx文件无效)

xlwt

xlwt是一个用于将数据和格式化信息写入旧Excel文件的库(如.xls)。

1、xlwt支持.xls文件写。

xlutils

xlutils是一个处理Excel文件的库,依赖于xlrd和xlwt。 1、xlutils支持.xls文件。 2、支持Excel操作。

xlwings

xlwings是一个可以实现从Excel调用Python,也可在python中调用Excel的库。 1、xlwings支持.xls读,支持.xlsx文件读写。 2、支持Excel操作。 3、支持VBA。 4、强大的转换器可以处理大部分数据类型,包括在两个方向上的numpy array和pandas DataFrame。

openpyxl

openpyxl是一个用于读取和编写Excel 2010 xlsx/xlsm/xltx/xltm文件的库。 1、openpyxl支持.xlsx文件的读写。 2、支持Excel操作。 3、加载.xlsx文件可以使用read_only模式。 4、写入.xlsx文件可以使用write_only模式。

xlsxwriter

xlsxwriter是一个用于创建Excel .xlsx文件的库。 1、xlswriter支持.xlsx文件写。 2、支持VBA。 3、写入.xlsx文件时使用内存优化模式。

win32com

win32com库存在于pywin32中,是一个读写和处理Excel文件的库。 1、win32com支持.xls,.xlsx文件的读写,支持.xlsx文件的写。 2、支持Excel操作。

DataNitro

DataNitro是一个内嵌在Excel中的插件。 1、DataNitro支持.xls,.xlsx文件的读写。 2、支持Excel操作。 3、支持VBA。 4、收费

pandas

pandas通过对Excel文件的读写实现数据输入输出 1、pandas支持.xls,.xlsx文件的读写。 2、支持只加载每个表的单一工作页。

为什么选择Xlwings

这么多库,我为什么会选择Xlwings学习了,主要是因为我的数据大部分是从系统导出的,自身带了一些格式,已经试过xlrd、xlutils、openpyxl、xlsxwriter、pandas都不能自动打开,必须经过处理之后才能打开,具体原因未找到,只有xlwings能正常操作。如果有知道原因的朋友请指点!

导入库

import xlwings as xw

打开excel

#visible是否可见。False表示后台运行。add_book 是否新建一个工作簿

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

新建excel工作簿

wb = app.books.add() #创建新的book

wb = app.books.open()

wk = xw.Book()

wk = xw.books.open()

打开工作薄

wb = app.books.open()

wb = xw.Book()

wb = xw.books.open()

返回所有book对象集合

app.books #返回一个打开的全部workbook的列表。Python打开的和手动打开的是不互通的

退出excel(操作完了必须退出,否则会一直有一个EXCEL进程保留在后台运行)

wb.save() #保存文件.

wb.close() #关闭文件.

app.kill(): #中止进程,强制退出。

app.quit(): #在不保存的情况下,退出excel程序。

活动对象

# 活动应用程序(即Excel实例)

app = xw.apps.active

# 活动工作簿

wb = xw.books.active # 在活动

appwb = app.books.active # 在特定app

# 活动工作表

sht = xw.sheets.active # 在活动工作簿

sht = wb.sheets.active # 在特定工作簿

# 活动工作表的Range

xw.Range('A1') #在活动应用程序的活动工作簿的活动表上

活动工作表的捷径 :xw.Range

如果要快速与活动工作簿中的活动工作表通信,则不需要实例化工作簿和工作表对象,可以简单地执行:

import xlwings as xw

xw.Range('A1').value = 'Foo'

xw.Range('A1').value'Foo'

注意:在与Excel交互时,您应该只使用xw.Range。在脚本中,您应该始终通过工作簿和工作表对象,如上所示。

选定单元格

可以使用A1表示法,Excel的基于1的索引的元组,命名范围或两个Range对象来实例化范围:

xw.Range('A1')

xw.Range('A1:C3')

xw.Range((1,1)) #基于1的索引的元组,相当于'A1'

xw.Range((1,1), (3,3)) #基于1的索引的元组,相当于'A1:C3'

xw.Range('NamedRange') #命名范围

xw.Range(xw.Range('A1'), xw.Range('B2'))#两个Range对象来实例化范围,相当于'A1:B2'

基于1的索引的元组在列操作时比较方便,免于目标单元格在查出多少列后,还要去对应A、B、C...列。

圆括号遵循Excel的行为(即基于1的索引),而方括号使用Python的基于0的索引/切片。例如,以下表达式都引用相同的范围:

xw.apps[763].books[0].sheets[0].range('A1') #工作簿1中第一个工作表的A1单元格xw.apps(10559).books(1).sheets(1).range('A1') #工作簿1中第一个工作表的A1单元格xw.apps[763].books['Book1'].sheets['Sheet1'].range('A1') #工作簿book中sheet1工作表的A1单元格

xw.apps(10559).books('Book1').sheets('Sheet1').range('A1')#工作簿book中sheet1工作表的A1单元格

请注意,apps键是进程ID(PID)。可以通过xw.apps.keys()获取PID列表。

Range索引/切片

>>> rng = xw.Book().sheets[0].range('A1:D5')

>>> rng[0, 0]

>>> rng[1]

>>> rng[:, 3:]

>>> rng[1:3, 1:3]

未完待续,自己写一遍,对学习是很有益,即使很多都是复制粘贴的,也有很多细节在纯粹的看时没注意到的。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值