python3与Excel的完美结合
https://segmentfault.com/a/1190000016256490
Excel 是 Windows 环境下流行的、强大的电子表格应用。openpyxl 模块让 Python 程序能读取和修改 Excel 电子表格文件。例如,可能有一个无聊的任务,需要从一个电子表格拷贝一些数据,粘贴到另一个电子表格中。或者可能需要从几千行中挑选几行,根据某种条件稍作修改。或者需要查看几百份部门预算电子表格,寻找其中的赤字。正是这种无聊无
脑的电子表格任务,可以通过 Python 来完成。LibreOffice Calc, WPS 和 OpenOffice Calc 都能处理 Excel 的电子表格文件格式,这意味着 openpyxl 模块也能处理来自这些应用程序的电子表格。你可以从 https://www.libreoffice.org/和http://www.openoffice.org/下载这些软件。即使你的计算机上已经安装了 Excel,可能也会发现这些程序更容易使用。
1. Excel文档基本定义
- 工作簿(workbook): 一个 Excel 电子表格文档;
- 工作表(sheet): 每个工作簿可以包含多个表, 如: sheet1, sheet2等;
- 活动表(active sheet): 用户当前查看的表;
- 列(column): 列地址是从 A 开始的;
- 行(row): 行地址是从 1 开始的;
- 单元格(cell): 特定行和列的方格;
2. 安装 openpyxl 模块
Python 没有自带 openpyxl,所以必须安装。
pip3 install openpyxl
3. 读取 Excel 文档
将使用一个电子表格 example.xlsx,你可以自己创建这个电子文档,内容如下:
- 在导入 openpyxl 模块后,就可以使用 openpyxl.load_workbook()函数。打开 Excel 文档
# 导入工作薄
1. wb = openpyxl.load_workbook('excelDemo/example.xlsx') # 加载工作薄
2. wb.sheetnames # 获取当前所有工作表的名称, 返回一个列表
3. wb.active # 获取当前活跃的工作表
- 从工作簿中取得工作表
4. sheet = wb['Sheet1'] # 工作表
5. sheet.title # 获取当前活动表的名称
6. sheet.cell(row=1, column=2) # 获取单元格指定行和指定列的内容
- 表中取得单元格
Cell 对象有一个 value 属性,不出意外,它包含这个单元格中保存的值。Cell 对象也有 row、column 和 coordinate 属性,提供该单元格的位置信息。
row属性给出的是整数 1,column 属性给出的是'B',coordinate 属性给出的是'B1'。
6. cell = sheet['A1']
7. cell_value = sheet['A1'].value
8. cell.row, cell.column cell.coordinate
4. 工作簿、工作表、单元格
下面是从电子表格文件中读取单元格涉及的所有函数、方法和数据类型。一个完整的操作过程如下:
- 导入 openpyxl 模块。
- 调用 openpyxl.load_workbook()函数。
- 取得 Workbook 对象。
- 调用 wb.sheetnames和 wb.active 获取工作簿详细信息。
- 取得 Worksheet 对象。
- 使用索引或工作表的 cell()方法,带上 row 和 column 关键字参数。
- 取得 Cell 对象。
- 读取 Cell 对象的 value 属性
一个完整的案例代码如下:
import openpyxl
# 1. 读取excel文档
wb = openpyxl.load_workbook('excelDemo/example.xlsx')
# # 返回一个workbook对象, 有点类似于文件对象;
# print(wb, type(wb))
# 2. 在工作薄中取得工作表
# print(wb.get_sheet_names())
# 返回一个列表, 存储excel表中所有的sheet工作表;
print(wb.sheetnames)
# 返回一个worksheet对象, 返回当前的活动表;
# print(wb.get_active_sheet())
# print(wb.active)
# 3. 获取工作表中, 单元格的信息
# wb.get_sheet_by_name('Sheet1')
sheet = wb['example']
print(sheet['A1'])
print(sheet['B1'].value)
cell = sheet['B1']
print(cell.row, cell.column)
print(sheet.cell(row=3, column=2))
print(sheet.cell(row=3, column=2).value)
print(sheet.cell(row=3, column=2, value='www'))
# sheet的属性
print(sheet.max_column)
print(sheet.max_row)
print(sheet.title)
sheet.title = 'example'
print(sheet.title)
for row in sheet.rows:
for cell in row:
print(cell.value, end='\t')
print('\n')
wb.save(filename="excelDemo/example.xlsx")
python3与Excel的完美结合的更多相关文章
- Python3+Requests+Excel完整接口自动化框架
框架整体使用Python3+Requests+Excel:包含对实时token的获取 框架结构图 1.------base -------runmethond.py runmethond:对不同的请求 ...
- java导入excel很完美的取值的方法
java导入excel很完美的取值的方法 1.解决方法: /** * 获取单元格数据内容为字符串类型的数据 * @param cell Excel单元格 * @return St ...
- 【Python数据分析】Python3操作Excel(二) 一些问题的解决与优化
继上一篇[Python数据分析]Python3操作Excel-以豆瓣图书Top250为例 对豆瓣图书Top250进行爬取以后,鉴于还有一些问题没有解决,所以进行了进一步的交流讨论,这期间得到了一只尼玛 ...
- python3 读写excel
一直认为python3可以很快的实现很多简单的功能,今天要读excel表格数据,想来很简单,网上一搜,用xlrd即可,然后很多人给出了不同的版本,号称xlrd3,实际上官网一看,xlrd0.9.4兼容 ...
- Python3 解析excel文件
Python3 解析读取excel文件 一.第三方库 import xlrd 二.代码示例 import xlrd ''' 读取Excel每个sheet的第一列和第二列的值,拼接成json串,写入文件 ...
- python3 写excel文件 xlsxwriter模块
之前一直用这个传说中可以让python飞起来的xlwings模块来写入excel文件,今天发现xlsxwriter模块,发现这才是飞起来的feel!! 使用体验对比: xlwings:写入7000+单 ...
- python3对excel文件读写操作
===========================excelfile文件============================================ ================= ...
- python3读取excel数据
import xlrd worksheet = xlrd.open_workbook('XXXX.xlsx') #打开excel文件 sheet_names= worksheet.sheet_na ...
- Python3 操作Excel
首先说明一下 在处理大文件时,openpyxl 的性能不如 xlrd,xlwt等.所以可以读取的时候使用xlrd,写的时候用openpyxl. 今天遇到一个使用场景:excel存放的是一条条用例,包含 ...
随机推荐
- P5110 【块速递推】
太菜了,不会生成函数,于是用特征方程来写的这道题 首先我们知道,形如\(a_n=A*a_{n-1}+B*a_{n-2}\)的特征方程为\(x^2=A*x+B\) 于是此题的递推式就是:\(x^2=23 ...
- 手动停止jquery ajax请求
主要调用jquery提供的ajax abort方法,详细代码如下: <html> <head> <meta charset="UTF-8"> & ...
- GoCN每日新闻(2019-10-24)
GoCN每日新闻(2019-10-24) GoCN每日新闻(2019-10-24) 1. 学习Golang之服务器框架编写 – CS网络通信 http://1t.click/aJag 2. 如何实现 ...
- mysql 通配符%以及_
%匹配任意长度 _ 匹配单个字符 mysql> select * from table1; +----------+------------+-----+-------------------- ...
- ranger整合kerberos
一.生成主体 在kerberos服务器生成用于ranger的用户主体: # kadmin.local addprinc -randkey HTTP/manager1@HADOOP.COM addpri ...
- LAMP架构介绍
介绍一下LAMP架构 LMAP即Linux+Apache+Mysql/MariaDB+Perl/PHP/Python的首字母缩写.这是一组常用来搭建动态网站或者服务器的开源软件.它们本身都是各自独立的 ...
- 基于Docker部署ETCD集群
基于Docker部署ETCD集群 关于ETCD要不要使用TLS? 首先TLS的目的是为了鉴权为了防止别人任意的连接上你的etcd集群.其实意思就是说如果你要放到公网上的ETCD集群,并开放端口,我建议 ...
- modao账户
chairman987@163.com 墨刀注册 p@ssw0rd OR 123456
- ProxyFactoryBean与AopProxy介绍
1.ProxyFactoryBean的典型配置 2.进入getObject方法 /** * Return a proxy. Invoked when clients obtain beans from ...
- 【转】Jupyter Notebook主题字体设置及自动代码补全
Jupyter Notebook用久了就离不开了,然而自带的主题真的不忍直视.为了视力着想,为了自己看起来舒服,于是折腾了一番..在github上发现了一个jupyter-themes工具,可以通过p ...