1、openpyxl

本章我们继续讲解基于另一个三方库openpyxl 如何进行Excel文件操作,首先需要先安装它。

pip install openpyxl

openpyxl  的优点在于,当我们打开一个Excel文件后,既可以对它进行读操作,又可以对它进行写操作,而且在操作的便捷性上是优于xlwt 和xlrd 的。此外,如果要进行样式编辑和公式计算,使用openpyxl 也远比上一个章节我们讲解的方式更为简单,而且openpyxl 还支持数据透视和插入图表等操作,功能非常强大。有一点需要再次强调, openpyxl 并不支持操作Office 2007以前版本的Excel文件。

2、openpyxl读取Excel文件

例如在当前文件夹下有一个名为“阿里巴巴2020年股票数据.xlsx”的Excel文件,如果想读取并显示该文     件的内容,可以通过如下所示的代码来完成。

import datetime

import openpyxl

# 加载一个工作簿 ---> Workbook

wb = openpyxl.load_workbook('阿里巴巴2020年股票数据.xlsx')

# 获取工作表的名字

print(wb.sheetnames)

# 获取工作表 ---> Worksheet

sheet = wb.worksheets[0]

# 获得单元格的范围

print(sheet.dimensions)

# 获得行数和列数

print(sheet.max_row, sheet.max_column)

# 获取指定单元格的值

print(sheet.cell(3, 3).value)

print(sheet['C3'].value)

print(sheet['G255'].value)

# 获取多个单元格(嵌套元组)

print(sheet['A2:C5'])

# 读取所有单元格的数据

for row_ch in range(2, sheet.max_row + 1):

for col_ch in 'ABCDEFG':

value = sheet[f'{col_ch}{row_ch}'].value

if type(value) == datetime.datetime:

print(value.strftime('%Y年%m月%d日'), end='\t')

elif type(value) == int:

print(f'{value:<10d}', end='\t')

elif type(value) == float:

print(f'{value:.4f}', end='\t')

else:

print(value, end='\t')

print()

提示:上面代码中使用的Excel文件“阿里巴巴2020年股票数据.xlsx”可以通过后面的百度云盘地址     进行获取。链接:https://pan.baidu.com/s/1rQujl5RQn9R7PadB2Z5g_g 提取码:e7b4

需要提醒大家一点, openpyxl 获取指定的单元格有两种方式,一种是通过cell 方法,需要注意,该方法的行索引和列索引都是从 1 开始的,这是为了照顾用惯了Excel的人的习惯;另一种是通过索引运算,通过指定单元格的坐标,例如C3 、 G255 ,也可以取得对应的单元格,再通过单元格对象的value 属性,就可以获取到单元格的值。通过上面的代码,相信大家还注意到了,可以通过类似sheet['A2:C5'] 或sheet['A2':'C5'] 这样的切片操作获取多个单元格,该操作将返回嵌套的元组, 相当于获取到了多行多列。

3、openpyxlExcel文件

下面我们使用openpyxl 来进行写Excel操作。

import random

import openpyxl

# 第一步:创建工作簿(Workbook)

wb = openpyxl.Workbook()

# 第二步:添加工作表(Worksheet)

sheet = wb.active sheet.title = '期末成绩'

titles = ('姓名', '语文', '数学', '英语')

for col_index, title in enumerate(titles):

sheet.cell(1, col_index + 1, title)

names = ('关羽', '张飞', 'c赵云', '马超', '黄忠')

for row_index, name in enumerate(names):

sheet.cell(row_index + 2, 1, name)

for col_index in range(2, 5):

sheet.cell(row_index + 2, col_index, random.randrange(50, 101))

# 第四步:保存工作簿

wb.save('考试成绩表.xlsx')

4、​​​​​​​openpyxl调整样式和公式计算

在使用openpyxl 操作Excel时,如果要调整单元格的样式,可以直接通过单元格对象( Cell 对象)的属性进行操作。单元格对象的属性包括字体( font )、对齐( alignment )、边框( border )等, 具体的可以参考openpyxl 的官方文档。在使用openpyxl 时,如果需要做公式计算,可以完全按照Excel中的操作方式来进行,具体的代码如下所示。

import openpyxl

from openpyxl.styles import Font, Alignment, Border, Side

# 对齐方式

alignment = Alignment(horizontal='center', vertical='center')

# 边框线条

side = Side(color='ff7f50', style='mediumDashed')

wb = openpyxl.load_workbook('考试成绩表.xlsx')

sheet = wb.worksheets[0]

# 调整行高和列宽

sheet.row_dimensions[1].height = 30

sheet.column_dimensions['E'].width = 120

sheet['E1'] = '平均分'

# 设置字体

sheet.cell(1, 5).font = Font(size=18, bold=True, color='ff1493', name='华文楷体')

# 设置对齐方式

sheet.cell(1, 5).alignment = alignment

# 设置单元格边框

sheet.cell(1, 5).border = Border(left=side, top=side, right=side, bottom=side)

for i in range(2, 7):

# 公式计算每个学生的平均分

sheet[f'E{i}'] = f'=average(B{i}:D{i})'

sheet.cell(i, 5).font = Font(size=12, color='4169e1', italic=True)

sheet.cell(i, 5).alignment = alignment

wb.save('考试成绩表.xlsx')

​​​​​​​5、openpyxl生成统计图表

通过openpyxl 库,可以直接向Excel中插入统计图表,具体的做法跟在Excel中插入图表大体一致。我们可以创建指定类型的图表对象,然后通过该对象的属性对图表进行设置。当然,最为重要的是为图表  绑定数据,即横轴代表什么,纵轴代表什么,具体的数值是多少。最后,可以将图表对象添加到表单中,具体的代码如下所示。

from openpyxl import Workbook

from openpyxl.chart import BarChart, Reference

wb = Workbook(write_only=True) sheet = wb.create_sheet()

rows = [

('类别', '销售A组', '销售B组'),

('手机', 40, 30),

('平板', 50, 60),

('笔记本', 80, 70),

('外围设备', 20, 10),

]

# 向表单中添加行

for row in rows: sheet.append(row)

# 创建图表对象

chart = BarChart() chart.type = 'col' chart.style = 10

# 设置图表的标题

chart.title = '销售统计图'

# 设置图表纵轴的标题

chart.y_axis.title = '销量'

# 设置图表横轴的标题

chart.x_axis.title = '商品类别'

# 设置数据的范围

data = Reference(sheet, min_col=2, min_row=1, max_row=5, max_col=3)

# 设置分类的范围

cats = Reference(sheet, min_col=1, min_row=2, max_row=5)

# 给图表添加数据

chart.add_data(data, titles_from_data=True)

# 给图表设置分类

chart.set_categories(cats)

chart.shape = 4

# 将图表添加到表单指定的单元格中

sheet.add_chart(chart, 'A10')

wb.save('demo.xlsx')

运行上面的代码,打开生成的Excel文件,效果如下图所示。

简单的总结

掌握了Python程序操作Excel的方法,可以解决日常办公中很多繁琐的处理Excel电子表格工作,最常见就是将多个数据格式相同的Excel文件合并到一个文件以及从多个Excel文件或表单中提取指定的数据。如果数据体量较大或者处理数据的方式比较复杂,我们还是推荐大家使用Python数据分析神器之一的pandas 库。

Python操作Excel(二)相关推荐

  1. 【Python数据分析】Python3操作Excel(二) 一些问题的解决与优化

    [Python数据分析]Python3操作Excel(二) 一些问题的解决与优化 参考文章: (1)[Python数据分析]Python3操作Excel(二) 一些问题的解决与优化 (2)https: ...

  2. openpyxl删除添加excel列_Python | 如何使用Python操作Excel(二)

    0 前言 在阅读本文之前,请确保您已满足或可能满足一下条件: 请确保您具备基本的Python编程能力. 请确保您会使用Excel. 请确保您的电脑已经安装好Python且pip可用. 请确保您已经读过 ...

  3. Python操作Excel表格(二)

    Python操作Excel表格第二弹 本博客在前一篇博客基础上增加了若干函数,如按列寻找值,查重和增强型查重.数据写入等相关代码.实现了类似Sql的查询(注解中的SQL语句仅做参考,并非可执行SQL) ...

  4. 全网最全 Python 操作 Excel 教程,建议收藏!

    [欢迎关注微信公众号:厦门微思网络] 微思网络(官网):https://www.xmws.cn/ 0 Python Excel库对比 我们先来看一下python中能操作Excel的库对比(一共九个库) ...

  5. excel进度条与百分比不符_用Python操作Excel数据

    今天给大家展示一个python操作Excel的小demo,demo的例子比较简单,如果大家有什么建议,欢迎可以直接在函数君的微信后台留言. 首先,我们需要安装python在我们的电脑上. 安装的步骤如 ...

  6. 最全整理!Python 操作 Excel 库 xlrd与xlwt 常用操作详解!

    来源/早起Python 在之前的Python办公自动化系列文章中,我们已经相信介绍了openyxl.xlsxwriter等Python操作Excel库. 相信大家对于几个库的差异与使用场景有了一定的认 ...

  7. 详解Python操作Excel文件

    前言 本篇文章主要总结了一下利用python操作Excel文件的第三方库和方法. 常见库简介 1.xlrd xlrd是一个从Excel文件读取数据和格式化信息的库,支持.xls以及.xlsx文件. 地 ...

  8. python excel取列_python取excel表格第一列数据-python操作excel,使用xlrd模块,获取某一列数据的......

    怎样用python,读取excel中的一列数据 Python对Excel的读写主要有xlrd.copyxlwt.xlutils.openpyxl.xlsxwriter几种. 1.xlrd主要用来读百取 ...

  9. 全网最全Python操作Excel教程,建议收藏!

    作者:超级大洋葱806 来源:https://blog.csdn.net/u014779536/article/details/108182833 大家好,猪哥前几天帮学妹爬了个数据,使用到了Pyth ...

最新文章

  1. struts配置文件没有标签提示
  2. VTK:可视化之VectorOfActors
  3. 每天进步一点点——负载均衡之反向代理
  4. QCSPCChart SPC控制图工具软件是面向对象的工具包
  5. 常用函数的傅里叶变换汇总
  6. kindeditor 文件上传 java_富文本编辑器kindeditor上传图片的配置方法
  7. 转:多玩网总裁李学凌:在腾讯阴影下
  8. 单片机学习笔记5--STM32时钟系统(基于百问网STM32F103系列教程)
  9. Android Webview调相机拍照选择图片并显示到网页
  10. 在Excel中优化跨页的合并单元格,避免打印后产生空白
  11. 【论文合集】2022年10月医学影像期刊论文合集
  12. css超出两行省略号没效果,Css 设置超过再两行显示省略号
  13. 安迪的第一个字典Uva 10815
  14. OSChina 周日乱弹 ——我已经开始适应这个身体了
  15. UPS不间断电源除尘技巧分析
  16. 利用集群技术实现Web服务器负载均衡
  17. RS-485(物理层) 硬件接口
  18. 会比Kubernetes和无服务器更有前途的是Istio
  19. Auto-Encoder (什么是Auto-Encoder part1)
  20. python(27) 抓取淘宝买家秀

热门文章

  1. 使用Aspose在Java中将Excel文件转换为HTML
  2. 【HTML作业】HTML设计--电影网站,影视网站
  3. c语言调用c 的库,C语言程序调用C库函数方法
  4. 定位器百科:老人、小孩的GPS定位器是如何工作的
  5. easyCMDB安装 ops版本和挂在U盘
  6. 算法很美 笔记 4.多维数组与矩阵
  7. iPhone突然黑屏开不了机怎么办?3种解决方法分享
  8. 腾讯AI Lab与北京协和医院联合发布国产手术导航系统
  9. 2.3 万 Star!直追微软 Visio,这个简洁实用的在线绘图工具必须推荐给你
  10. win10pro不够pro,win10专业工作站版本才是真的牛。