这是一份写给运营人员的Python指南。本文主要讲述如何使用Python操作Excel。完成Excel的创建,查询和修改操作。

相关代码请参考 https://github.com/RustFisher/python-playground

本文链接:https://www.rustfisher.com/2019/11/05/Python/Python-op-excel_openpyxl_use/

开发工具,环境

  • PyCharm - 方便好用的IDE
  • Python3

这里默认你的电脑上已经装有python3.x,环境变量已经配置好。

引入openpyxl

这里使用openpyxl库来操作Excel。类似的库还有xlrd。

penpyxl的基础使用方法请参见Python openpyxl 处理Excel使用指南

pip install openpyxl

数据准备

假定数据来自百度指数,以常见的一些搜索指数为例。给后面的操作准备一些数据,把数据写入Excel中。

创建Workbook对象,获取到当前可用的表格(sheet)。

直接使用append方法把一行数据追加写入。最后调用Workbook的保存方法,存储数据。

def create_excel_demo(file_path):
"""
创建Excel文件,并写入数据
:param file_path: 目标文件路径
:return none
"""
wb = Workbook()
ws = wb.active
ws.title = '搜索指数概览' ws.append(['关键词', '整体日均值', '移动日均值', '整体同比', '整体环比', '移动同比', '移动环比'])
ws.append(['excel', 27782, 18181, -0.11, -2, 0.21, 0.02])
ws.append(['python', 24267, 8204, 0.27, 0.06, 0.56, 0.01])
ws.append(['文案', 2411, 1690, 0.56, 0.33, 0.91, 0.46])
ws.append(['okr', 1928, 880, 0.38, 0.15, 0.29, 0.09])
ws.append(['kpi', 4212, 2784, 0.21, -0.19, 0.36, -0.22])
wb.save(file_path)

创建出来的表格,示例数据如下

关键词 整体日均值 移动日均值 整体同比 整体环比 移动同比 移动环比
excel 27782 18181 -0.11 -2 0.21 0.02
python 24267 8204 0.27 0.06 0.56 0.01
...

读取数据

访问整个表格的数据

访问表格中所有的数据,并打印出来。

首先我们要知道表格中有数据的单元格的范围,使用sheet.max_row与sheet.max_column获取表格的行列数量。

def read_xlsx_basic(file_path):
"""
读取Excel的数据并打印出来
"""
wb = load_workbook(file_path)
st = wb.active
end_row = st.max_row + 1
end_column = st.max_column + 1
print(st.title, '有', end_row, '行', end_column, '列')
for row in range(1, end_row):
for col in range(1, end_column):
print('{:10}'.format(st.cell(row=row, column=col).value), end='')
print()

值得注意的是,单元格下标是从1开始的。如果使用了不当的下标,报错信息

ValueError: Row or column values must be at least 1

参考: https://stackoverflow.com/questions/34492322/how-to-scan-all-sheet-cells

修改表格

有了Excel表格后,我们可以修改表格的一些格式和数据。

st表示当前表。

调整列的宽度

用 column_dimensions 来获取列。例如column_dimensions['A']获取到的是第A列。

ord方法是将字符转换为ascii码。ord('A')得到65。

这里调整的是A列到G列的宽度。

    for col in range(ord('A'), ord('G') + 1):
st.column_dimensions[chr(col)].width = 15

设置单元格格式

格式,比如字体大小,对齐模式,粗体斜体等。

字体

首先我们要拿到单元格cell,这里使用st.cell(row=1, column=col)来获取某一个格子。

Cell持有的font是不可修改的。不能使用如cell.font.size = 13这样的操作,会报异常。

copy方法是复制一个对象。这里复制的是font。

    cell = st.cell(row=1, column=col)
font = copy(cell.font)
font.size = 13
font.bold = True
cell.font = font

对齐

对齐模式。使用alignment属性。

cell.alignment = Alignment(horizontal="center", vertical="center")

数据显示

操作Excel时,我们可以设置单元格数据显示的方式,比如常规,数值,货币,百分比等等。

这里使用的是number_format属性。

如果数据(value)是0.02,经过下面的设置后,Excel中显示的是2%。

cell.number_format = '0%'

修改数据

修改单元格的数值(value)。

修改数据首先要拿到那个单元格cell,然后对其value赋值。

st.cell(row=2, column=7).value = 0.42  # 修改数值

修改了单元格的样式和数据后,可以打开表格看看效果。

参考:

运营的Python指南 - Python 操作Excel的更多相关文章

  1. 转 Python - openpyxl 读写操作Excel

    Python - openpyxl 读写操作Excel   openpyxl特点   openpyxl(可读写excel表)专门处理Excel2007及以上版本产生的xlsx文件,xls和xlsx之间 ...

  2. python用openpyxl操作excel

    python操作excel方法 1)自身有Win32 COM操作office但讲不清楚,可能不支持夸平台,linux是否能用不清楚,其他有专业处理模块,如下 2)xlrd:(读excel)表,xlrd ...

  3. python通过openpyxl操作excel

    python 对Excel操作常用的主要有xlwt.xlrd.openpyxl ,前者xlwt主要适合于对后缀为xls比较进行写入,而openpyxl主要是针对于Excel 2007 以上版本进行操作 ...

  4. 09 python学习笔记-操作excel(九)

    python操作excel使用xlrd.xlwt和xlutils模块,xlrd模块是读取excel的,xlwt模块是写excel的,xlutils是用来修改excel的.这几个模块可以使用pip安装, ...

  5. 用python库openpyxl操作excel,从源excel表中提取信息复制到目标excel表中

    现代生活中,我们很难不与excel表打交道,excel表有着易学易用的优点,只是当表中数据量很大,我们又需要从其他表册中复制粘贴一些数据(比如身份证号)的时候,我们会越来越倦怠,毕竟我们不是机器,没法 ...

  6. Python - openpyxl 读写操作Excel

    openpyxl特点   openpyxl(可读写excel表)专门处理Excel2007及以上版本产生的xlsx文件,xls和xlsx之间转换容易 注意:如果文字编码是“gb2312” 读取后就会显 ...

  7. python使用xlrd操作Excel文件

    一.xlrd读取Excel文件 用xlrd进行读取比较方便,流程和平常手动操作Excel一样,打开工作簿(Workbook),选择工作表(sheets),然后操作单元格(cell). 例子:要打开当前 ...

  8. python使用xlrd 操作Excel读写

    此文章非本人 一.安装xlrd模块 到python官网下载http://pypi.python.org/pypi/xlrd模块安装,前提是已经安装了python 环境. 二.使用介绍 1.导入模块 i ...

  9. Python使用openpyxl操作excel表格

    前言 本文的文字及图片来源于网络,仅供学习.交流使用,不具有任何商业用途,版权归原作者所有,如有问题请及时联系我们以作处理. PS:如有需要Python学习资料的小伙伴可以加点击下方链接自行获取 ht ...

随机推荐

  1. flexible.js分析--JavaScript

    //立即执行函数 (function flexible(window, document) { // 获取的html 的根元素 var docEl = document.documentElement ...

  2. 除了Web和Node,JavaScript还能做什么

    前言 提起JavaScript,我们也许经常会想到的是,可以用来写Web页面嘛,又或者,会想起Node.js 这个服务端环境,搞前后端同构. 那么,除此之外, JavaScript还可以做什么?   ...

  3. 3D漫游的分类 3D Navigation Taxonomy

    在2001年CHI发表的论文中1,Tan等人提出了一种对3D漫游的分类方法. 当时关于3D漫游(3D Navigation)的研究主要分为两种:一种是发掘有关漫游的认知原则,一种是开发一些具体的漫游技 ...

  4. 一个企图用来进行前端交流的qq群

    我建了一个企图用来进行前端交流的qq群! 希望各位前端开发攻城狮们加入! 大佬.小白都欢迎! 禁广告党! 只是想有一个纯净的环境去讨论一下大家遇到的问题和行业前景之类的话题. 661270378 期待 ...

  5. Kafka 学习笔记之 Consumer API

    Kafka提供了两种Consumer API High Level Consumer API Low Level Consumer API(Kafka诡异的称之为Simple Consumer API ...

  6. Linux修改屏幕分辨率至2K

    使用命令:cvt,与 xrandr 使用cvt命令查看分辨率配置: Modeline后边分别是 modeName 以及 详细的配置 linklee@linklee-270E5G-270E5U:~$ c ...

  7. UWP开发入门(二十四)—— Win10风格的打印对话框

    虽然经常看到阿迪王发“看那个开发UWP的又上吊了”的图……还是忍不住重启一下这个系列.最近有用到UWP的print API,特地来写一篇给某软的这个伟大构想续一秒. 之前的打印对话框差不多长成这样: ...

  8. 【TencentOS tiny】又有一个操作系统开源

    新闻 2019年9月18日,腾讯宣布将开源 自主研发的轻量级物联网实时操作系统TencentOS tiny.相比市场上其它系统,腾讯TencentOS tiny在资源占用.设备成本.功耗管理以及安全稳 ...

  9. js对象参考手册 -戈多编程

    今天来总结下常用的熟记的js api (一)JavaScript对象 (1)Array 对象属性:(3个) constructor lengh prototype 对象方法:(14个) contat( ...

  10. 基于Prometheus和Grafana的监控平台 - 环境搭建

    相关概念 微服务中的监控分根据作用领域分为三大类,Logging,Tracing,Metrics. Logging - 用于记录离散的事件.例如,应用程序的调试信息或错误信息.它是我们诊断问题的依据. ...