编程小白的自学笔记十五(python办公自动化操作EXCEL表格)

简介: 编程小白的自学笔记十五(python办公自动化操作EXCEL表格)

前言

在自学笔记一的时候就已经学习了表格的操作,不过那时学的是xlwt库,这次我们学习的是openpyxl库。


一、xlwt库与openpyxl库的区别

xlwt和openpyxl都是Python中处理Excel文件的库,但它们有一些区别。其中,xlwt针对Ecxec2007之前的版本,即.xls文件,其要求单个sheet不超过65535行;而openpyxl则主要针对Excel2007之后的版本(.xlsx),它对文件大小没有限制 。

此外,两者还有一些其他的区别,例如:

xlwt单个表格只能存储65000多行,而openpyxl单个sheet可以存储101万行;

xlwt的文件名后缀为xls;而openpyxl的文件名后缀为xlsx;

xlwt写入数据时从0行0列开始;openpyxl从1行1列开始。

二、创建表格

1、导入模块

首先,使用import导入openpyxl库,以便能够使用其中的类和函数。

2、创建文件

使用openpyxl库里面的Workbook()函数创建一个新的excel文件。

3、保存并命名文件

使用save方法保存文件,并将文件名作为传参传进去。

完整代码如下:

import openpyxl
wb=openpyxl.Workbook()
wb.save('测试0709.xlsx')

这时我们就在python文件的同目录下创建了“测试0709”的excel文件。

三、打开表格

打开表格使用load_workbook()函数就行,具体代码如下:

wb=openpyxl.load_workbook(测试0709.xlsx)

四、输入内容

1、选取工作表

使用过excel的都知道,一般创建好表格文件以后,里面会有三个工作表,默认使用的是第一个工作表,即sheet1,但是我试了一下,用openpyxl创建的工作表只有一个sheet,我们可以使用workbook.active来选取它,workbook.active的意思是选取当前活跃工作表。我们也可以直接传参来指定工作表,例如:

import openpyxl
wb=openpyxl.Workbook()
ws=wb[‘sheet’]

通过传入工作表的名字来选择工作表。

2、在工作表中输入数据

最简单的方法就是直接输入,就好像我们正常人操作excel表格,比如我们要在A1输入‘序号’,B2输入‘数值’,那么我们就直接写

ws[A1]=序号

Ws[B1]=数值

也可以先定位,再使用value赋值,例如:

ws.cell(row=1,column=3,value='备注')

基于以上的方法,我们准备多录入点数据,以备后面的其他测试,代码如下:

import random
import openpyxl
wb=openpyxl.load_workbook('测试0709.xlsx')
ws=wb.active
ws['A1']='序号'
ws['B1']='数值'
ws.cell(row=1,column=3,value='备注')
for i in range(2,100):
    ws.cell(row=i,column=1,value=i-1)
    ws.cell(row=i,column=2,value=random.randint(1,100))
wb.save('测试0709.xlsx')

在上面的代码中,我们在第一列录入了序号,从1到98,第二列我们使用随机函数,随机录入了100以内的正整数。备注是空的没有填数据。

五、读取内容

现在表格里面已经有很多内容了,我们该如何读取其中的内容呢?

最简单的方式就是输入数据所在的坐标,然后输出,例如:

import openpyxl
wb=openpyxl.load_workbook('测试0709.xlsx')
ws=wb.active
print(ws['B3'].value)

下面我们来做一个简单的习题,比如说输出数值大于50的序号。

看到这个题目,我的思路首先是取出第一行的数据,然后判断B列的数值是否大于50,如果大于50,则输出A列的序号,我们尝试写下代码:

import openpyxl
wb=openpyxl.load_workbook('测试0709.xlsx')
ws=wb.active
for i in range(2,len(ws['A'])+1):
    if ws[f'B{i}'].value>50:
        print(ws[f'A{i}'].value)

运行结果是成功的,我还想到一个方法,不是每次取出每一行的内容,而是取出B列的内容,在进行大小比较,通过值的行属性来输出A列的值,我们来写下,看代码:

import openpyxl
wb=openpyxl.load_workbook('测试0709.xlsx')
ws=wb.active
B=ws['B']
for bi in B:
    if bi.value=='数值':
        pass
    else:
       if int(bi.value)>50:
            print(ws.cell(row=bi.row,column=1).value)

经运行也是成功的。

下面再将难度升级,将大于50的数据重新保存到一个新的EXCEL表格中,下面我们来试一试,看代码:

import openpyxl
wb=openpyxl.load_workbook('测试0709.xlsx')
ws=wb.active
rows=ws.rows
lis=[]
for row in rows:
    lis1=[]
    if row[1].value=='数值':
        pass
    else:
        if int(row[1].value)>50:
            for i in range(0,2):
                lis1.append(row[i].value)
            lis.append(lis1)
wb1=openpyxl.Workbook()
ws1=wb1.active
ws1['A1']='序号'
ws1['B1']='数值'
for x in lis:
    ws1.append(x)
wb1.save('大于50的表格.xlsx')

成功运行了,创建了一个新表格,里面数据都是数值大于50的,对里面一些代码进行说明:

“rows=ws.rows”,是将表格里的每一行作为列表全部返回,我们对每一行的数值进行判断完毕后,所以还是按照列表格式把每个单元格的数据添加到列表里,最后再把数据输入到新的EXCEL表格中。

六、插入删除行和列

在openpyxl中,可以使用以下方法插入、删除行和列:

1、插入行

在指定位置插入一行

ws.insert_rows(index=2)

在最后一行插入一行

ws.insert_rows(index=ws.max_row)

2、删除行

删除指定位置的行

ws.delete_rows(index=1)

删除最后一行

ws.delete_rows(index=ws.max_row-1)

3、插入列

在指定位置插入一列

ws.insert_cols(index=2)

在最后一列插入一列

ws.insert_cols(index=ws.max_column)

4、 删除列

删除指定位置的列

ws.delete_cols(index=1)

删除最后一列

ws.delete_cols(index=ws.max_column-1)


总结

openpyxl是一个Python库,用于读取、写入和操作Excel文件。它支持.xlsx格式的Excel文件,并提供了丰富的API来处理这些文件。以下是openpyxl的一些主要特点:

1、读写Excel文件:openpyxl可以读取和写入Excel文件,包括创建新的工作表、插入行和列、设置单元格值等操作。

2、支持多种数据类型:openpyxl支持多种数据类型,包括数字、日期、时间、字符串等。

3、提供公式计算:openpyxl可以对Excel文件中的数据进行计算,并将结果保存到单元格中。

4、支持样式设置:openpyxl可以设置单元格的字体、颜色、边框等样式。5、支持图表生成:openpyxl可以生成各种类型的图表,包括折线图、柱状图、饼图等。

6、兼容性好:openpyxl与Microsoft Excel的兼容性非常好,可以在Windows和Mac OS X上运行。

总之,openpyxl是一个功能强大、易于使用的Python库,可以帮助用户轻松地处理Excel文件。

相关文章
|
11天前
|
存储 数据挖掘 开发者
Python编程入门:从零到英雄
在这篇文章中,我们将一起踏上Python编程的奇幻之旅。无论你是编程新手,还是希望拓展技能的开发者,本教程都将为你提供一条清晰的道路,引导你从基础语法走向实际应用。通过精心设计的代码示例和练习,你将学会如何用Python解决实际问题,并准备好迎接更复杂的编程挑战。让我们一起探索这个强大的语言,开启你的编程生涯吧!
|
1天前
|
数据采集 数据可视化 数据挖掘
利用Python自动化处理Excel数据:从基础到进阶####
本文旨在为读者提供一个全面的指南,通过Python编程语言实现Excel数据的自动化处理。无论你是初学者还是有经验的开发者,本文都将帮助你掌握Pandas和openpyxl这两个强大的库,从而提升数据处理的效率和准确性。我们将从环境设置开始,逐步深入到数据读取、清洗、分析和可视化等各个环节,最终实现一个实际的自动化项目案例。 ####
|
4天前
|
Python
Python编程入门:从零开始的代码旅程
本文是一篇针对Python编程初学者的入门指南,将介绍Python的基本语法、数据类型、控制结构以及函数等概念。文章旨在帮助读者快速掌握Python编程的基础知识,并能够编写简单的Python程序。通过本文的学习,读者将能够理解Python代码的基本结构和逻辑,为进一步深入学习打下坚实的基础。
|
8天前
|
数据采集 存储 数据处理
Python中的多线程编程及其在数据处理中的应用
本文深入探讨了Python中多线程编程的概念、原理和实现方法,并详细介绍了其在数据处理领域的应用。通过对比单线程与多线程的性能差异,展示了多线程编程在提升程序运行效率方面的显著优势。文章还提供了实际案例,帮助读者更好地理解和掌握多线程编程技术。
|
13天前
|
开发者 Python
使用Python实现自动化邮件通知:当长时程序运行结束时
本文介绍了如何使用Python实现自动化邮件通知功能,当长时间运行的程序完成后自动发送邮件通知。主要内容包括:项目背景、设置SMTP服务、编写邮件发送函数、连接SMTP服务器、发送邮件及异常处理等步骤。通过这些步骤,可以有效提高工作效率,避免长时间等待程序结果。
52 9
|
10天前
|
存储 人工智能 数据挖掘
Python编程入门:打造你的第一个程序
本文旨在为初学者提供Python编程的初步指导,通过介绍Python语言的基础概念、开发环境的搭建以及一个简单的代码示例,帮助读者快速入门。文章将引导你理解编程思维,学会如何编写、运行和调试Python代码,从而开启编程之旅。
34 2
|
12天前
|
存储 Python
Python编程入门:理解基础语法与编写简单程序
本文旨在为初学者提供一个关于如何开始使用Python编程语言的指南。我们将从安装Python环境开始,逐步介绍变量、数据类型、控制结构、函数和模块等基本概念。通过实例演示和练习,读者将学会如何编写简单的Python程序,并了解如何解决常见的编程问题。文章最后将提供一些资源,以供进一步学习和实践。
25 1
|
13天前
|
运维 监控 网络安全
自动化运维的崛起:如何利用Python脚本简化日常任务
【10月更文挑战第43天】在数字化时代的浪潮中,运维工作已从繁琐的手工操作转变为高效的自动化流程。本文将引导您了解如何运用Python编写脚本,以实现日常运维任务的自动化,从而提升工作效率和准确性。我们将通过一个实际案例,展示如何使用Python来自动部署应用、监控服务器状态并生成报告。文章不仅适合运维新手入门,也能为有经验的运维工程师提供新的视角和灵感。
|
13天前
|
机器学习/深度学习 存储 数据挖掘
Python 编程入门:理解变量、数据类型和基本运算
【10月更文挑战第43天】在编程的海洋中,Python是一艘易于驾驭的小船。本文将带你启航,探索Python编程的基础:变量的声明与使用、丰富的数据类型以及如何通过基本运算符来操作它们。我们将从浅显易懂的例子出发,逐步深入到代码示例,确保即使是零基础的读者也能跟上步伐。准备好了吗?让我们开始吧!
24 0
|
2月前
|
数据采集 存储 JavaScript
自动化数据处理:使用Selenium与Excel打造的数据爬取管道
本文介绍了一种使用Selenium和Excel结合代理IP技术从WIPO品牌数据库(branddb.wipo.int)自动化爬取专利信息的方法。通过Selenium模拟用户操作,处理JavaScript动态加载页面,利用代理IP避免IP封禁,确保数据爬取稳定性和隐私性。爬取的数据将存储在Excel中,便于后续分析。此外,文章还详细介绍了Selenium的基本设置、代理IP配置及使用技巧,并探讨了未来可能采用的更多防反爬策略,以提升爬虫效率和稳定性。
101 4