首页 > 其他分享 >Openpyxl教程-基础操作

Openpyxl教程-基础操作

时间:2023-01-05 13:11:34浏览次数:40  
标签:xlsx 教程 sheet Openpyxl 单元格 cell ws2 操作 openpyxl

1.openpyxl简介

openpyxl是用于读取/写入Excel 2010 xlsx/xlsm文件的Python库,也就是说openpyxl这个Python库不支持xls文件的读取和操作,如果在工作中遇到xls文件我们就不能使用这个库。官方说它的诞生是因为缺少可从Python本地读取/写入Office Open XML格式的库,为了方便大家就开发了这个库,这是非常棒的。

2.文件转换

上述提到openpyxl只能操作xlsx文件,当我们遇到xls文件的时候就需要进行转化,转换方式这里提供几种方案供大家参考:

方法一:手动打开xlsx文件,然后另存为xlsx类型的文件。

方法二:使用pywin32模块进行转换,示例代码如下:

import os
import win32com.client as win32
filename = r'C:\Users\XH\Desktop\1.xls'
Excelapp = win32.gencache.EnsureDispatch('Excel.Application')
workbook = Excelapp.Workbooks.Open(filename)
# 转xlsx时: FileFormat=51,
# 转xls时:  FileFormat=56,
workbook.SaveAs(filename.replace('xls', 'xlsx'), FileFormat=51)
workbook.Close()
Excelapp.Application.Quit()
# 删除源文件
# os.remove(filename)

# 如果想将xlsx的文件转换为xls的话,则可以使用以下的代码:
# workbook.SaveAs(filename.replace('xlsx', 'xls'), FileFormat=56)

 

方法三:使用pandas模块进行转换,代码如下:

import pandas as pd
filename = r'C:\Users\XH\Desktop\1.xls'
filename2 = r'C:\Users\XH\Desktop\1.xlsx'
read_res = pd.read_excel(filename)
read_res.to_excel(filename2, index=False)

方法三在很多情况下出现一定的错误,比如在很多时候因为源表格的问题会造成数据丢失类的错误。个人推荐使用第二种方法。

3.基本操作-创建工作簿

安装openpyxl这个模块非常简单,cmd窗口中输入: pip install openpyxl。无需在文件系统上创建文件即可开始使用openpyxl。接下来我们来进行一个简单操作:

1、创建一个新的名为Mytest.xlsx文件。

2、在工作簿上第一个位置新建一个名为“mytest”的sheet页。

我们可以这样来实现,代码中每一个操作上都有相应的注释:

from openpyxl import Workbook
# 创建一个工作簿对象
wb = Workbook()
# 在索引为0的位置创建一个名为mytest的sheet页
ws = wb.create_sheet('mytest',0)
# 对sheet页设置一个颜色(16位的RGB颜色)
ws.sheet_properties.tabColor = 'ff72BA'
# 将创建的工作簿保存为Mytest.xlsx
wb.save('Mytest.xlsx')
# 最后关闭文件
wb.close()

最后生成的文件样式如下:

 

那么打开已有的文件Mytest.xlsx,读取一些信息怎么操作呢?我们可以这样:

from openpyxl import load_workbook
# 加载工作簿
wb2 = load_workbook('Mytest.xlsx')
# 获取sheet页
ws2 = wb2['mytest']
ws3 = wb2.get_sheet_by_name('mytest')
# 打印sheet页的颜色属性值
print('color:',ws2.sheet_properties.tabColor)
wb2.close()

上述代码的输出如下,可以看到一些属性值或参数:

color: <openpyxl.styles.colors.Color object>
Parameters:
rgb='00ff72BA', indexed=None, auto=None, theme=None, tint=0.0, type='rgb'

另外,有些小伙伴可能看到上述代码中,ws2和ws3都是获取sheet页签的。的确这两种方法的效果是一样的,大家在平时的工作中都可以使用。

如果想获取这个工作簿的所有sheet页,可以这样:

print(wb2.sheetnames)

注意sheetnames属性值是一个列表,输出的结果为一个列表:['mytest', 'Sheet']使用for循环也是可以的:

for each_sheet in wb2.sheetnames:
    print('each_sheet:',each_sheet)

4.基本操作-访问单元格

使openpyxl访问单元格很简单,分单个单元格访问和多个单元格的访问。我们接着来学习:访问单元格的方式一般也有两种做法:假设现在我们要访问单个单元格A1,我们可以这样:

cell_1 = ws2['A1']cell_2 = ws2.cell(row=1, column=1)

如果要取得这个单元格的内容,只需要在结尾加上value属性就可以了:

value_1 = ws2['A1'].value
value_2 = ws2.cell(row=1, column=1).value

如果需要给单元格进行设置值,则可以这样实现,比如给单元格A1设置内容:

ws2['A1'].value = 'python知识学堂'
ws2.cell(row=1, column=1).value ='python知识学堂'

 

对于多个单元格的设置就要借助for循环了。注意,设置后要保存工作簿,否则没有效果。

多个单元格的获取一般需要用到列表切片的知识或者使用for循环来进行:

# 访问A1至C3范围单元格
cell_range = ws2['A1':'C3']
# 访问A列所有存在数据的单元格
colA = ws2['A']
# 访问A列到C列所有存在数据的单元格
col_range = ws2['A:C']
# 访问第1行所有存在数据的单元格
row1 = ws2[1]
# 访问第1行至第5行所有存在数据的单元格
row_range = ws2[1:5]

 

注意,上述cell_range等对象都是<class 'tuple'>类型的。如果先获取这些单元格中的值,我们可以这样:

for each_cell in cell_range:
    for each in each_cell:
     print(each.value)

for each_cell in colA:
    print(each_cell.value)

至于为什么获取cell_range和colA的for循序的次数不一样,这个问题就留给大家自己了。

 

for循环的方式访问多个单元格可以这样:

for row in ws2.iter_rows(min_row=1, max_col=2, max_row=2):
    for cell in row:
        print(cell)
#输出:
<Cell 'mytest'.A1>
<Cell 'mytest'.B1>
<Cell 'mytest'.A2>
<Cell 'mytest'.B2>

for col in ws2.iter_cols(min_row=1, max_col=2, max_row=2):
         for cell in col:
             print(cell)
#输出:
<Cell 'mytest'.A1>
<Cell 'mytest'.A2>
<Cell 'mytest'.B1>
<Cell 'mytest'.B2>

 

这两个方法是按行优先和列优先的顺序进行访问单元格的。

大家可以新建一个工作簿,然后在工作簿中写入一些数据,之后运行以下代码看看打印一些什么:

print(tuple(ws2.rows))
print(tuple(ws2.columns))

注意:ws2.rows和ws2.columns是generator对象,因此需要使用tuple进行“解析”下。

5.最后的注意

使用openpyxl进行工作的时候,当一个工作结束的时候我们需要进行Excel文件的保存操作:wb.save('Mytest.xlsx')。这个保存唯一需要注意的是:文件是默认替换的。也就是说我们在保存文件的时候,openpyxl将进行替换而不发出告警。如果大家想保存不同阶段的文件,则可以在保存文件的时候加一个时间戳。

6.总结

以上就是本次的推文,推文介绍的内容比较简单,大家跟着学习的时候最好也跟着实践一下。后期我们将继续介绍其他方面的知识。比如在Excel中使用公式,合并单元格等操作。大家在学习的时候有什么疑问,也欢迎在评论区留言。

标签:xlsx,教程,sheet,Openpyxl,单元格,cell,ws2,操作,openpyxl
From: https://www.cnblogs.com/dadashui/p/17027254.html

相关文章

  • ThinkPHP多语言模块文件包含RCE复现详细教程
    漏洞描述:ThinkPHP在开启多语言功能的情况下存在文件包含漏洞,攻击者可以通过get、header、cookie等位置传入参数,实现目录穿越+文件包含,通过pearcmd文件包含这个trick即可实......
  • oh-my-zsh离线配置傻瓜教程-不需要修改install.sh文件
    前提系统里已经安装zsh离线安装oh-my-zsh下载github的zipoh-my-zsh,上传到服务器并解压下载github的ziphmyzsh-offline,上传到服务器并解压将offline_install.diff放......
  • JNI详细教程
    一、创建java文件首先创建需要调用jni的java文件。如:packagecom.rg.serialPort;publicclassSerialPort{...publicSerialPort(Filedevice,intbaudRate,......
  • 海光芯片+麒麟操作系统v10部署docker
    1.docker离线部署参考文档https://codeleading.com/article/9515573273/2.docker离线包下载地址http://mirrors.aliyun.com/docker-ce/linux/static/stable/x86_64/3.......
  • 推荐一个设计师的宝藏网站羽兔网-设计师的软件下载安装和教程都有非常全
    1、有所有设计相关软件下载2、设计软件安装步骤和过程3、设计软件使用方法和教程真的非常全。网站连接:羽兔网  比如下面以blender软件下载和安装为例: 关键是......
  • C#连接数据库实现开发图书管理系统操作代码
     //客户端登录界面(Form1.cs窗口体系) usingSystem; usingSystem.Collections.Generic; usingSystem.ComponentModel; usingSystem.Data; usingSystem......
  • Vue3中操作子组件实例
    子组件Child.vue<template><hr/>{{INFO}}<hr/><button@click="changeInfo">changeInfo</button></template><scriptsetuplang="ts">import{ref,r......
  • 草图大师(SketchUp)2022安装图文教程
    ​草图大师(SketchUp)是一个非常受欢迎并且易于使用的3D设计软件,它被比喻为电子设计中的“铅笔”。它的主要特点就是使用简便,人人都可以快速上手。并且可以将使用SketchUp创建......
  • 操作符
    本文是对【初识C语言】中操作符部分的详细解读。自学b站”鹏哥C语言“笔记。操作符分类:算数操作符移位操作符位操作符赋值操作符单目操作符关系操作符逻辑操作符条件操作符......
  • 操作系统-内存管理-内存读取
    文章大部分表述图片来自:https://www.jeanleo.com/2021/07/06/linux内存管理剖析/。非原创内存是如何给读取的计算机上电启动的时候,BIOS会检测并计算物理内存大小......