Python —— 操作Excel

活动地址:CSDN21天学习挑战赛

Excel是我们工作日常中使用较多的一款电子表格文件,小编之前在一个对日项目中当程序员时每天的工作百分之六十都是要和Excel 去打交道的。工作中也算是慢慢熟悉了Excel,同时也对“宏”等的使用也算是得心应手,之前一直使用的是c#项目中使用Openxml读取/写入Excel数据,今天来谈谈,python如何实现对Excel文件的数据读取和写入


一,Python Excel库对比

Python中可以操作excel的相关类库还是比较多的。

库名官网特点
xlwings 库官网xlwings 是开源且免费的,预装了 Anaconda 和 WinPython,可在 Windows 和 macOS 上运行。通过 Python 脚本或 Jupyter notebook 自动化 Excel,通过宏从 Excel 调用 Python,并编写用户定义的函数(UDF 仅适用于 Windows)
openpyxl 库官网openpyxl 是一个用于读取 / 编写 Excel 2010 xlsx/xlsm/xltx/xltm 文件的 Python 库。它是由于缺乏从 Python 中读取 / 编写 Office Open XML 格式的现有库而诞生的。
xlrd 库官网在 python 中,xlrd 库是一个很常用的读取 excel 文件的库,其对 excel 文件的读取可以实现比较精细的控制。
xlwt 库官网类比于 xlrd 的 reader,那么 xlwt 就相对于 writer,而且很纯正的一点就是它只能对 Excel 进行写操作。xlwt 和 xlrd 不光名字像,连很多函数和操作格式也是完全相同。
xlutils 库官网xlutils(excel utilities)是一个提供了许多操作修改 excel 文件方法的库。xlutils 库也仅仅是通过复制一个副本进行操作后保存一个新文件,xlutils 库就像是 xlrd 库和 xlwt 库之间的一座桥梁,因此,xlutils 库是依赖于 xlrd 和 xlwt 两个库的。
xlsxwriter 库官网xlsxwriter 是用于创建 Excel XLSX 文件的 Python 模块,可用于将文本、数字、公式和超链接写入 Excel2007 + XLSX 文件中的多个工作表。它支持格式化等功能。可以说除了 Excel 本身,就属这个功能最齐全了。
pandas 库官网pandas 是基于 NumPy 的一种工具,该工具是为了解决数据分析任务而创建的。Pandas 纳入了大量库和一些标准的数据模型,提供了高效地操作大型数据集所需的工具。
Marmir 库官网Marmir 采用 Python 数据结构并将其转换为电子表格。它是类固醇上的 xlwt 和 google 电子表格。目标是使用最少的配置轻松生成多种类型的有用表文件。

python-docx 库

(操作word)

官网python-docx 是一个用于创建和更新 Microsoft Word (.docx) 文件的 Python 库。快速开始、处理文档、处理文本、使用截面、使用页眉和页脚、API基础理、解样式、使用样式理解图片和其他形状。只对 windows 平台有效。

textract 库

(操作word)

官网它同时兼顾 “doc” 和 “docx”,但安装过程需要一些依赖。你可以批量的用 python 生成 word 文件,推荐使用 docx,不需要会太多。

二,Python xlrd 操作Excel

python操作excel主要用到xlrd和xlwt这两个库,即xlrd是读excel,xlwt是写excel的库。至于为什么要用这个模块进行操作是因为在UI自动化或者接口自动化中数据维护是一个核心,所以此模块非常实用。xlrd模块可以用于读取Excel的数据,速度非常快,推荐使用!

2.1,安装依赖模块

安装有两种方式:

  • 到python官网下载http://pypi.python.org/pypi/xlrd模块安装,前提是已经安装了python 环境。
  • cmd窗口 pip install xlrd 和 pip install xlwt

cmd命令执行安装或者是在工具的终端中实行都是可以的在工具中实行时显示图一和图二的内容表示安装成功。

图一

 图一

 图二

2.2导入模块

import xlrd # 导入模块

2.3打开Excel文件读取数据

data = xlrd.open_workbook(filename)#文件名以及路径,如果路径或者文件名有中文给前面加一个 r

2.4常用的函数

 excel中最重要的方法就是book和sheet的操作

(1)获取book(excel文件)中一个工作表

table = data.sheets()[0]             #通过索引顺序获取
table = data.sheet_by_index(sheet_indx)  #通过索引顺序获取
table = data.sheet_by_name(sheet_name)  #通过名称获取
 
# 以上三个函数都会返回一个xlrd.sheet.Sheet()对象
 
names = data.sheet_names()        #返回book中所有工作表的名字
data.sheet_loaded(sheet_name or indx)    # 检查某个sheet是否导入完毕

(2) 行的操作 

nrows = table.nrows
    # 获取该sheet中的行数,注,这里table.nrows后面不带().
table.row(rowx)
    # 返回由该行中所有的单元格对象组成的列表,这与tabel.raw()方法并没有区别。
table.row_slice(rowx)
    # 返回由该行中所有的单元格对象组成的列表
table.row_types(rowx, start_colx=0, end_colx=None)
    # 返回由该行中所有单元格的数据类型组成的列表;    
    # 返回值为逻辑值列表,若类型为empy则为0,否则为1
table.row_values(rowx, start_colx=0, end_colx=None)
    # 返回由该行中所有单元格的数据组成的列表
table.row_len(rowx)
    # 返回该行的有效单元格长度,即这一行有多少个数据

(3)列(colnum)的操作 

ncols = table.ncols
    # 获取列表的有效列数
table.col(colx, start_rowx=0, end_rowx=None)
    # 返回由该列中所有的单元格对象组成的列表
table.col_slice(colx, start_rowx=0, end_rowx=None)
    # 返回由该列中所有的单元格对象组成的列表
table.col_types(colx, start_rowx=0, end_rowx=None)
    # 返回由该列中所有单元格的数据类型组成的列表
table.col_values(colx, start_rowx=0, end_rowx=None)
    # 返回由该列中所有单元格的数据组成的列表

 (4)单元格的操作

table.cell(rowx,colx)
    # 返回单元格对象
table.cell_type(rowx,colx)
    # 返回对应位置单元格中的数据类型
table.cell_value(rowx,colx)
    # 返回对应位置单元格中的数据

图三 

 

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值