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


    系列文章目录

    编程小白的自学笔记十四(python办公自动化创建、复制、移动文件和文件夹

    编程小白的自学笔记十三(python办公自动化读写文件)

    编程小白的自学笔记十二(python爬虫入门四Selenium的使用实例二)

    编程小白的自学笔记十一(python爬虫入门三Selenium的使用+实例详解)

    编程小白的自学笔记十(python爬虫入门二+实例代码详解) 

     编程小白的自学笔记九(python爬虫入门+代码详解) 


    目录

    系列文章目录

    文章目录

    前言

    一、xlwt库与openpyxl库的区别

    二、创建表格

    1、导入模块

     2、创建文件

     3、保存并命名文件

    三、打开表格

    四、输入内容

     1、选取工作表

     2、在工作表中输入数据

     五、读取内容

     六、插入删除行和列

    1、插入行

    2、删除行

    3、插入列

    4、 删除列

    总结


    前言

    在自学笔记一的时候就已经学习了表格的操作,不过那时学的是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方法保存文件,并将文件名作为传参传进去。

    完整代码如下:

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

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

    三、打开表格

    打开表格使用load_workbook()函数就行,具体代码如下:
    wb=openpyxl.load_workbook(测试0709.xlsx)

    四、输入内容

     1、选取工作表

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

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

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

     2、在工作表中输入数据

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

    ws[A1]=序号

    Ws[B1]=数值

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

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

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

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

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

     五、读取内容

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

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

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

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

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

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

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

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

     经运行也是成功的。

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

    1. import openpyxl
    2. wb=openpyxl.load_workbook('测试0709.xlsx')
    3. ws=wb.active
    4. rows=ws.rows
    5. lis=[]
    6. for row in rows:
    7. lis1=[]
    8. if row[1].value=='数值':
    9. pass
    10. else:
    11. if int(row[1].value)>50:
    12. for i in range(0,2):
    13. lis1.append(row[i].value)
    14. lis.append(lis1)
    15. wb1=openpyxl.Workbook()
    16. ws1=wb1.active
    17. ws1['A1']='序号'
    18. ws1['B1']='数值'
    19. for x in lis:
    20. ws1.append(x)
    21. 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文件。

  • 相关阅读:
    JSON.stringify()与JSON.parse()没有你想的那样简单
    HTML5-常用标签(二)
    PHP基础面试题
    云原生之快速使用Nacos Spring Cloud
    300PLCmpi转以太网通过兴达易控MPI-ETH-XD1.0在铝型材时效炉中的应用
    Audacity开源音频处理软件使用入门
    mysql缓存、log、存储引擎、b+数解答
    span 元素自带间距??
    Spring面试(源码手撕)
    js中如何实现一个简单的防抖函数?
  • 原文地址:https://blog.csdn.net/m0_49914128/article/details/133868638