【Python】 更棒的Excel操作模块xlwings

【xlwings】

  说到Python操作Excel,有好多模块都可以支持这个工作。比如最底层的win32模块不仅可以操作Excel,还可以操作其他一众windows的软件。

  其他的比较熟悉的有xlrd,xlwt和xlutils这三个。分别负责Excel文件的读、写、读写转换工作。虽然一般情况下的Excel操作都可以通过这三个模块来完成,但是还是有很多不便的地方。比如单元格格式的写入和读取很麻烦,通过xlutils将一个Excel读取再写入到一个新文件中时格式也不会被一起复制过去。

  另外最近我遇到的需求就是,基于一个Excel模板,往里面填充数据。虽然可以将模板转化为xlwt的代码写死在生成脚本中,但是每次都要重新生成一个文件未免太过麻烦,而且一个格子一个格子地写入会让代码量飞速上涨。。无奈之下另寻他路,尝试着用了xlwings这个模块。

■  基本使用

  和xlrd等不同,xlwings设计的基础理念不是面向单个的Excel文档进行的,而是可以处理一个包含了多个Excel文档的“Excel项目”。通过建立其app等逻辑组分概念,可以让整个Excel项目可以更加有序方便地进行计算和互相通讯。xlwings中设计的各个模型的概念层级如下图所示:

  其中App是作为一个逻辑的分组,一个Book可以认为对应一个Excel文档,Sheet对应一张工作表,Range对应具体表中的一片区域的内容。首先,下面是一个最为常见的,打开一个Excel文档并进行处理的简单过程:

import xlwings as xw

book = xw.Book(‘/path/to/test.xlsx‘)
# 此时界面上会弹出Excel窗口,如果test.xlsx文件不存在则会报错,如果test.xlsx已经被打开,直接返回这个文件对象

print book.name,book.fullname    # 打印文件名和绝对路径
print book.app    # 可以查看book所在哪个APP
print book.sheets    # 又是一个类列表结构,存放各种Sheet对象
book.activate()    # 如果Excel没有获得当前系统的焦点,调用这个方法可以回到Excel中去
book.close()    # 关闭Excel文档,但只是关闭文件本身,不关闭excel程序。。若要关闭Excel程序则需要调用响应APP实例的kill方法。经过试验,先调用close会导致默认创建的app实例自动消失,从而无法调用kill,从而关不掉Excel所以最好的办法不是调用这个close而是调用app.kill()。
sheet = book.sheets[0]
# 其他获取sheet对象的方法还有book.sheets[‘sheet_name‘]

  上面说到了获取一个具体的sheet,然一个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...等等

  其中activate,autofit,cliear_content等这些方法都还挺有意思的。最为核心的方法应该就是range了,通过它可以获取到具体的某一段范围的数据。

  例如sheet.range(‘A1‘)获取到A1单元格的对象,通过调取此对象的value属性,就可以读取/改变单元格的值,并且这一切都不会影响单元格本身的格式。

  更加imba的一种做法是sheet.range(‘A1:C3‘)这样的形式可以一次性获取到一个区域内所有单元格的对象。调取其value对象的话得到的也是一个二维列表形式的数据集合,可以形象方便地把Excel中的数据映射到python中来。对于设置数据时,传入数据可以是一个不符合指出区域规定的结构,但是这样结果会比较微妙。。建议实验

  需要指出的是和xlrd一样,读取value时合并单元格只在其左上角的子单元格中有值,其余的和未填写的单元格一样,都是None。

■  对于range,能做的还有更多

  除了简单的调用value和为value赋值来读写Excel外,还有如下接口可以使用

 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对象

  

■  关于App

  其实App还没有仔细研究过,简单来说,当通过xw.Book创建一个实例的时候,默认向xw.apps中添加一个App实例,而book就属于这个App。

  如上面所说,解决Excel程序无法关闭的问题可以用这个app实例的kill方法。app.kill()可以把Excel程序连同文件一并关闭。另外,如果不想让Excel程序跳出来则可以置app.visible=False,即时设置即时生效

  

原文地址:https://www.cnblogs.com/franknihao/p/8514634.html

时间: 2024-10-27 17:51:11

【Python】 更棒的Excel操作模块xlwings的相关文章

Python学习笔记-数据报表之Excel操作模块

利用Python操作Excel的模块XlsxWriter,可以操作多个工作表的文字.数字.公式.图表等. XlsxWriter模块具有以下功能: 100%兼容的Excel XLSX文件,支持Excel 2003.Excel 2007等版本: 支持所有Excel单元格数据格式: 单元格合并.批注.自动筛选.丰富多格式字符串等: 支持工作表PNG.JPEG图像,自定义图表: 内存优化模式支持写入大文件. 安装XlsxWriter模块 # python3 -m easy_install -i http

数据报表之Excel操作模块

Excel是当今最流行的电子表格处理软件,支持丰富的计算函数及图表,在系统运营方面广泛用于运营数据报表,比如业务质量.资源利用.安全扫描等报表,同时也是应用系统常见的文件导出格式,以便数据使用人员做进一步加工处理.本节主要讲述利用Python操作Excel的模块XlsxWriter(https://xlsxwriter.readthedocs.org),可以操作多个工作表的文字.数字.公式.图表等.XlsxWriter模块具有以下功能: 100%兼容的Excel XLSX文件,支持Excel 2

RPA学习-Python Excel 操作模块 XlsxWriter 之插入图片 worksheet

艺赛旗RPA全面免费下载中点击下载http://www.i-search.com.cn/index.html?from=line27 在最近的项目上有遇到一个需求:需要将图片写到 execl 中.这里和大家分享一下. worksheet.insert_image()insert_image(row, col, image[, options])在工作表单元格中插入一张图片. 参数: row(int) - 单元格所在的行(索引从 0 开始计数)col(int) - 单元格所在的列(索引从 0 开始

Python对Linux系统的操作模块

1.pip安装(pip 是"A tool for installing and managing Python packages.",也就是说pip是python的软件安装工具)yum -y install epel-releaseyum -y install python-pipyum -y install python-develyum -y install gcc* 2.下载psutil(或使用 pip install psutil 安装)wget https://pypi.py

Python不归路_os和system模块

OS模块简单的来说它是一个Python的系统编程的操作模块,可以处理文件和目录这些我们日常手动需要做的操作,OS模块提供对操作系统进行调用的接口. 几个重要函数: os.getcwd()#查看当前所在路径,默认是Python程序所在路径 os.chdir()#切换目录,功能和linux中cd命令一样 os.curdir#返回当前目录'.' os.pardir#返回当前父目录'..' os.makedirs()#新建多级目录,功能和linux中的mkdir -p命令一样 os.removedirs

python excel操作及网络编程

python excel操作 一:excel获取值操作 1.导入模块 import xlrd 2.打开Excel文件读取数据 data = xlrd.open_workbook('excelFile.xls') 3.使用技巧 获取一个工作表 table = data.sheets()[0]          #通过索引顺序获取 table = data.sheet_by_index(0) #通过索引顺序获取 table = data.sheet_by_name(u'Sheet1')#通过名称获取

Python对Excel操作详解

  Python对Excel操作详解 文档摘要: 本文档主要介绍如何通过python对office excel进行读写操作,使用了xlrd.xlwt和xlutils模块.另外还演示了如何通过Tcl  tcom包对excel操作. 关键字: Python.Excel.xlrd.xlwt.xlutils.TCl.tcom     1 Python简介 Python是一种面向对象.直译式电脑编程语言,具有近二十年的发展历史,成熟且稳定.它包含了一组完善而且容易理解的标准库,能够轻松完成很多常见的任务.

python3操作Excel openpyxl模块的使用

python 与excel 安装模块 本例子中使用的模块为: openpyxl 版本为2.4.8 安装方法请参看以前发表的文章(Python 的pip模块安装方法) Python处理Excel表格 使用模块:openpyxl(2.4.8) 基本使用方法 1.首先导入模块:import openpyxl 2.打开一个已经存在的excel文件: wb=openpyxl.load_workbook('example.xlsx') (文件和脚本放在同一个目录下,如果不是的话需要加上路径 wb=wpenp

python爬虫主要就是五个模块:爬虫启动入口模块,URL管理器存放已经爬虫的URL和待爬虫URL列表,html下载器,html解析器,html输出器 同时可以掌握到urllib2的使用、bs4(BeautifulSoup)页面解析器、re正则表达式、urlparse、python基础知识回顾(set集合操作)等相关内容。

本次python爬虫百步百科,里面详细分析了爬虫的步骤,对每一步代码都有详细的注释说明,可通过本案例掌握python爬虫的特点: 1.爬虫调度入口(crawler_main.py) # coding:utf-8from com.wenhy.crawler_baidu_baike import url_manager, html_downloader, html_parser, html_outputer print "爬虫百度百科调度入口" # 创建爬虫类class SpiderMai