xlwings 操做 excel

 

xlwings:数组

xlwings是一个Python库,它使Python的一些数据分析特性能够在Excel实例中使用,包括对numpy数组、pandas Series和DataFrame的支持。与其余任何Python库同样,咱们可使用pip或conda等经常使用方法来安装它。详细文档(https://www.kancloud.cn/gnefnuy/xlwings-docs/1127455)app

在xlwings中,有四种主要的对象类型,按递减的层次顺序排列:App(表明一个Excel实例)、Book、Sheet和Range。除了这些以外,咱们还将处理Chart和Shape对象。ui

一 application 操做:

1 导入:

import xlwings as xwspa

2 打开 excel

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

#visible是否可见。False表示后台运行。 add_book 是否新建一个工做簿
其余操做:
app.screen_updating = False 
# :屏幕更新,就是说代码对于excel的操做你能够看见,关闭实时更新能够加快脚本运行。默认是True。
app.pid #App进程pid
app.books #返回一个打开的所有workbook的列表。Python打开的和手动打开的是不互通的 终止进程,强制退出。 app.quit() #不保存的状况下,退出excel程序

二  workbooks

1新建wk对象

命令有不少,选择一个经常使用的就好。excel

wb = app.books.add() #建立新的book
wk = xw.Book()
wk = xw.books.add()

2 打开 excel文件

wb = app.books.open('filepath')
wk = xw.Book('filepath')
wk = xw.books.open('filepath')

3 打开未储存或未关闭的excel实例

wk = xw.Book('Book1')    
wk = xw.books['Book1']  #也可使用索引

若是在两个Excel实例中打开了相同的文件,则须要彻底限定它并包含应用程序实例。 您将经过xw.apps.keys()找到您的应用实例密钥(PID):code

xw.apps[10559].books['FileName.xlsx']
查看全部的实例进程:
xw.apps.keys() #输出list

kill全部的实例进程:
for i in xw.apps.keys():
  i = 'taskkill/pid ' + str(i) + ' -t -f'
  os.system(i)

4.保存

wb.save(path=None)#:保存工做簿,若为指定路径,保存在当前工做目录。 

5. 关闭

wk.close()  #在没有保存的状况下关闭。

 三 对worksheet 操做

wb = app.books.open('im.xlsx')
sheet = wb.sheets[0]对象

1 返回操做对象

sheet.activate #<bound method Sheet.activate of <Sheet [im.xlsx]Sheet1>> 

2 返回sheet指定的book

sheet.book

3 返回-个range对象,表示sheet上全部的单元格

sheet.cells #<Range [im.xlsx]Sheet1!$1:$1048576> 可使用 sheet.cells[0,0].value 获取cell值。

4 获取或设置Sheet的名称

sheet.name

sheet.names 返回全部的工做表特定名称。

5  获取sheet中的全部图表集合

sheet.charts

6 清空表中全部数据和格式。

sheet.clear()

7 清楚工做表的内容,但保留格式

sheet.clear_contents()

8 删除工做表

sheet.delete()

9 返回表索引(与excel相同)

sheet.index

10 建立一个新的Sheet并使其成为活动工做表

(name=None, before=None, after=None) 
#参数:name(str,default None) - 新工做表的名称。 若是为None,则默认为Excel的name.before (Sheet, default None) - 一个对象,指定在新工做表添加以前的added.after (Sheet, default None) - 指定工做表以后的工做表的对象 表格已添加。wb.sheets.add

 11 在整个工做表上自动调整列,行或二者的宽度

sheet.autofit(axis=None) 参数:axis (string, default None) –要自动调整行, 使用如下之一: rows 或 r,要自动调整列, 使用如下之一: columns h c,要自动调整行和列, 不提供参数
 

四 操做range

1 引用区域

sheet.range('A1:F8')  #使用value可获取A1-F8的数据,以二元list展开

2 引用单元格

 sheet.range(‘A1’) #  .value 获取单元格值

3 单元格赋值

sheet.range('A1').value="key"

4 按行写入

sheet.range('A1').value=[1,2,3,4,5]

5 按列写入

sheet.range('A1').options(transpose=True).value=[1,2,3,4,5]

6 获取行数

sheet.used_range.last_cell.row

7 获取列数

sheet.used_range.last_cell.column 

8 获取连续的整行数据

sheet.range('A1').expand('right').value

9 获取连续的整列数据

sheet.range('A1').expand('down').value

10 获取行数和列数

sheet.range(1, 1).expand().shape