python- excel 创建/写入/删sheet+花式遍历

news2024/11/20 9:30:54

文章目录

  • 前言
    • python- excel 创建/写入/删sheet+花式遍历
      • 1. excel 创建
      • 2. 写入excel
      • 3. 创建写入excel demo实战
      • 4. 删除sheet
      • 5. excel 花式遍历 demo实战
        • 5.1. 获取 A1的值
        • 5.2. 获取指定列的切片数据,获取 B1到B5的值
        • 5.3. 循环整个excel的这个sheet
        • 5.4. 遍历指定行&列:从第2行开始至第5行,每行打印5列
        • 5.5. 遍历指定列:从第2列第4列
        • 5.5. 按列循环
      • 6. excel 花式遍历完整demo

前言

  如果您觉得有用的话,记得给博主点个赞,评论,收藏一键三连啊,写作不易啊^ _ ^。
  而且听说点赞的人每天的运气都不会太差,实在白嫖的话,那欢迎常来啊!!!


python- excel 创建/写入/删sheet+花式遍历

1. excel 创建

创建一个excel放到内存里
wb = Workbook()
获取当前活动的sheet
sheet = wb.active
修改sheet名称
sheet.title = ‘修改的名称’
保存到本地
wb.save(路径/xx.xlsx)

2. 写入excel

打开已有文件
wb = load_workbook(path)
获取当前活动的sheet
sheet = wb.active
写入方式一、数据可以直接分配到单元格(可以输入公式)
sheet[‘A1’] = ‘你好啊’
写入方法二、可以附加行,从第一列开始附加(从最下空白处,最左开始)(可以输入多行)
sheet.append([1, 2, 3, 4, 5, 1, 2, 3, 4, 5])
sheet.append([1, 2, 3, 4, 5, 1, 2, 3, 4, 5])

写入方式三、python 类型会自动转换
sheet[‘B1’] = datetime.datetime.now().strftime(‘%Y-%m-%d’)
创建一个新的sheet
newSheet = wb.create_sheet(“NewSheet”)
保存
wb.save(path)

3. 创建写入excel demo实战

import datetime
import os
import string
import random
from openpyxl import Workbook, load_workbook


# 返回指定目录下的所有文件和目录名
def listdir(file_path):
    paths = os.listdir(file_path)
    print(f'返回指定目录【{file_path}】下的所有文件和目录名:{os.listdir(file_path)}')
    return paths


def deleteFile(path):
    # 删除该目录下所有文件
    files = listdir(path)
    for file_name in files:
        # 函数会根据操作系统自动使用适当的分隔符,生成路径
        file_path_del = os.path.join(path, file_name)
        try:
            if os.path.isfile(file_path_del):  # 检查是否为文件
                os.remove(file_path_del)  # 删除文件
                print(f"Deleted {file_path_del}")
            else:
                print(f"Skipped {file_path_del} (not a file)")
        except OSError as error:
            print(f"Error while deleting {file_path_del}: {error}")


# 生成随机字符串
def createNum():
    v = "".join(random.sample(string.ascii_lowercase + string.digits, 10))
    return v


"""
 创建excel
 @:param sheetName Sheet名字
 @:param path 持久化路径
"""
def createExcel(sheetName, path):
    # 创建一个excel放到内存里
    wb = Workbook()
    # 获取当前活动的sheet
    sheet = wb.active
    print(f'打印sheet表名:{sheet.title}')
    # 修改sheet名称
    sheet.title = sheetName
    print(f'打印修改后的sheet表名:{sheet.title}')
    # 持久化到本地
    wb.save(path)
if __name__ == '__main__':
    try:
        # 创建excel
        excelName = f'测试-{createNum()}.xlsx'
        sheetName = '测试1'
        file_path = 'D:\pythonExcel'
        # 清理 D:\pythonExcel下所有文件
        deleteFile(file_path)
        path = os.path.join(file_path, excelName)
        createExcel(sheetName, path)
        # 打开已有文件,并写入数据
        wb = load_workbook(path)
        # 获取当前活动的sheet
        sheet = wb.active
        # 方式一、数据可以直接分配到单元格(可以输入公式)
        sheet['A1'] = '你好啊'
        # 方法二、可以附加行,从第一列开始附加(从最下空白处,最左开始)(可以输入多行)
        for i in range(1, 10):
            sheet.append([1, 2, 3, 4, 5, 1, 2, 3, 4, 5])
            sheet.append([6, 7, 8, 9, 10, 6, 7, 8, 9, 10])
        # 方式三、python 类型会自动转换
        sheet['B1'] = datetime.datetime.now().strftime('%Y-%m-%d')

        # 创建一个新的sheet
        newSheet = wb.create_sheet("NewSheet")
        # 设置新sheet为活动sheet
        wb.active = newSheet
        newSheet.append(['测试1', '测试2', '测试3', '测试4', '测试5', '测试6', '测试7', '测试8', '测试9', '测试10'])

        for i in range(1, 10):
            newSheet.append([1, 2, 3, 4, 5, 1, 2, 3, 4, 5])
            newSheet.append([6, 7, 8, 9, 10, 6, 7, 8, 9, 10])
        wb.save(path)

    except Exception as e:
        print(f"Exception: {e}")

执行测试:
在这里插入图片描述

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

4. 删除sheet

wb.remove(sheet)

demo实战:

import os
from openpyxl import load_workbook


def listdir(file_path):
    paths = os.listdir(file_path)
    print(f'返回指定目录【{file_path}】下的所有文件和目录名:{os.listdir(file_path)}')
    return paths


if __name__ == '__main__':
    path = 'D:\pythonExcel'
    try:
        fileName = listdir(path)
        file_path =os.path.join(path,  fileName[0])
        # 打开已有文件
        wb = load_workbook(file_path)
        # 获取所有 sheet
        print(f'获取所有sheet:{wb.sheetnames}')
        print('删除sheet:测试1')
        sheet = wb['测试1']
        wb.remove(sheet)
        wb.save(path)
        # 打开已有文件
        wb = load_workbook(file_path)
        # 获取所有 sheet
        print(f'获取所有sheet:{wb.sheetnames}')

    except Exception as e:
        print(f"Exception : {e}")

5. excel 花式遍历 demo实战

import os
from openpyxl import load_workbook


def listdir(file_path):
    paths = os.listdir(file_path)
    print(f'返回指定目录【{file_path}】下的所有文件和目录名:{os.listdir(file_path)}')
    return paths

5.1. 获取 A1的值
if __name__ == '__main__':
    path = 'D:\pythonExcel'
    try:
        fileName = listdir(path)
        file_path =os.path.join(path,  fileName[0])
        # 打开已有文件
        wb = load_workbook(file_path)
        # 获取所有 sheet
        print(f'获取所有sheet:{wb.sheetnames}')
        # 获取【NewSheet】 sheet页
        sheet = wb['NewSheet']
        # 获取 A1的值
        print('======================获取A1的值')
        print(f'A1:{sheet["A1"].value}')
    except Exception as e:
        print(f"Exception : {e}")


在这里插入图片描述

5.2. 获取指定列的切片数据,获取 B1到B5的值


if __name__ == '__main__':
    path = 'D:\pythonExcel'
    try:
        fileName = listdir(path)
        file_path =os.path.join(path,  fileName[0])
        # 打开已有文件
        wb = load_workbook(file_path)
        # 获取所有 sheet
        print(f'获取所有sheet:{wb.sheetnames}')
        # 获取【NewSheet】 sheet页
        sheet = wb['NewSheet']
        # 获取指定列的切片数据,获取 B1到B5的值
        print('======================获取指定列的切片数据,获取 B1到B5的值')
        for cell in sheet["B1:B5"]:
            print(f'{cell[0].coordinate}:{cell[0].value}')
            # for row in cell:
            #     print(f'{row.coordinate}:{row.value}')
    except Exception as e:
        print(f"Exception : {e}")




在这里插入图片描述

5.3. 循环整个excel的这个sheet

if __name__ == '__main__':
    path = 'D:\pythonExcel'
    try:
        fileName = listdir(path)
        file_path =os.path.join(path,  fileName[0])
        # 打开已有文件
        wb = load_workbook(file_path)
        # 获取所有 sheet
        print(f'获取所有sheet:{wb.sheetnames}')
        # 获取【NewSheet】 sheet页
        sheet = wb['NewSheet']
        print('======================循环整个excel的这个sheet')
        for row in sheet:
            for cell in row:
                print(cell.value, end=',')
            print()
    except Exception as e:
        print(f"Exception : {e}")




在这里插入图片描述

5.4. 遍历指定行&列:从第2行开始至第5行,每行打印5列

if __name__ == '__main__':
    path = 'D:\pythonExcel'
    try:
        fileName = listdir(path)
        file_path =os.path.join(path,  fileName[0])
        # 打开已有文件
        wb = load_workbook(file_path)
        # 获取所有 sheet
        print(f'获取所有sheet:{wb.sheetnames}')
        # 获取【NewSheet】 sheet页
        sheet = wb['NewSheet']
        print('======================遍历指定行&列:从第2行开始至第5行,每行打印5列')
        for row in sheet.iter_rows(min_row=2, max_row=5,  max_col=5):
            for cell in row:
                print(cell.value, end=',')
            print()
    except Exception as e:
        print(f"Exception : {e}")

在这里插入图片描述

5.5. 遍历指定列:从第2列第4列

if __name__ == '__main__':
    path = 'D:\pythonExcel'
    try:
        fileName = listdir(path)
        file_path =os.path.join(path,  fileName[0])
        # 打开已有文件
        wb = load_workbook(file_path)
        # 获取所有 sheet
        print(f'获取所有sheet:{wb.sheetnames}')
        # 获取【NewSheet】 sheet页
        sheet = wb['NewSheet']
        print('======================遍历指定列:从第2列第4列')
        for row in sheet.iter_rows(min_col=2,  max_col=4):
            for cell in row:
                print(cell.value, end=',')
            print()
    except Exception as e:
        print(f"Exception : {e}")

在这里插入图片描述

5.5. 按列循环

if __name__ == '__main__':
    path = 'D:\pythonExcel'
    try:
        fileName = listdir(path)
        file_path =os.path.join(path,  fileName[0])
        # 打开已有文件
        wb = load_workbook(file_path)
        # 获取所有 sheet
        print(f'获取所有sheet:{wb.sheetnames}')
        # 获取【NewSheet】 sheet页
        sheet = wb['NewSheet']
        print('======================按列循环')
        for row in sheet.columns:
            for cell in row:
                print(cell.value, end=',')
            print()
    except Exception as e:
        print(f"Exception : {e}")




在这里插入图片描述

6. excel 花式遍历完整demo

import os
from openpyxl import load_workbook


def listdir(file_path):
    paths = os.listdir(file_path)
    print(f'返回指定目录【{file_path}】下的所有文件和目录名:{os.listdir(file_path)}')
    return paths


if __name__ == '__main__':
    path = 'D:\pythonExcel'
    try:
        fileName = listdir(path)
        file_path =os.path.join(path,  fileName[0])
        # 打开已有文件
        wb = load_workbook(file_path)
        # 获取所有 sheet
        print(f'获取所有sheet:{wb.sheetnames}')
        # 获取【NewSheet】 sheet页
        sheet = wb['NewSheet']
        # 获取 A1的值
        print('======================获取A1的值')
        print(f'A1:{sheet["A1"].value}')
        # 获取指定列的切片数据,获取 B1到B5的值
        print('======================获取指定列的切片数据,获取 B1到B5的值')
        for cell in sheet["B1:B5"]:
            print(f'{cell[0].coordinate}:{cell[0].value}')
            # for row in cell:
            #     print(f'{row.coordinate}:{row.value}')
        print('======================循环整个excel的这个sheet')
        for row in sheet:
            for cell in row:
                print(cell.value, end=',')
            print()
        print('======================遍历指定行&列:从第2行开始至第5行,每行打印5列')
        for row in sheet.iter_rows(min_row=2, max_row=5,  max_col=5):
            for cell in row:
                print(cell.value, end=',')
            print()
        print('======================遍历指定列:从第2列第4列')
        for row in sheet.iter_rows(min_col=2,  max_col=4):
            for cell in row:
                print(cell.value, end=',')
            print()
        print('======================按列循环')
        for row in sheet.columns:
            for cell in row:
                print(cell.value, end=',')
            print()
    except Exception as e:
        print(f"Exception : {e}")




本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1081412.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

VR全景云端看车,让你享受不一样的购车体验

这个“黄金周”可谓是热闹非凡,不仅房企大降价,部分车企也在“黄金周”发力,降价优惠促销量,那么你准备买车了吗?买车也是一个大件,需要多家店去走动比对价位,难免会挑花了眼,其实我…

中国SaaS行业等待“渡劫时刻”

期待、追捧、失望、质疑,中国SaaS行业激荡十几年,尝遍了市场浮沉,如今潮水褪去,SaaS企业们到了见真章的时刻。 一开始,SaaS行业被人们寄予厚望。互联网的蓬勃发展,数字化转型的历史进程,似乎都…

快讯|Tubi 有 Rabbit AI 啦

在每月一期的 Tubi 快讯中,你将全面及时地获取 Tubi 最新发展动态,欢迎星标关注【比图科技】微信公众号,一起成长变强! Tubi 推出 Rabbit AI 帮助用户找到喜欢的视频内容 Tubi 于今年九月底推出了 Rabbit AI,这是一项…

基于 gin框架搭建入门项目

go mod init gin-ranking go: creating new go.mod: module gin-ranking go: to add module requirements and sums:go mod tidy下载gin框架 cmd窗口中执行命令: go get -u github.com/gin-gonic/ginpackage mainimport ("github.com/gin-gonic/gin"&qu…

圭亚那奥罗拉金矿配电工程中AM5SE系列微机保护装置

安科瑞 崔丽洁 摘要:目前,微机保护装置广泛应用于电力系统中,该类装置能够有效监测电力系统的运行状况,并实时记录电力系统出现故障的位置及性质,从而为故障的快速处理提供有效的参考信息。本文介绍的AM5SE系列微机保…

android:can not find libdevapi.so

一、为什么会出现这样的报错? 引用了一些第三方的sdk的so库之后通常都会遇到这样的错误,(“nativeLibraryDirectories”[/data/app/com.lukouapp-1/lib/arm64, /vendor/lib64, /system/lib64]]] couldnt find "libxxxx.so"&#x…

zookeeper节点数据类型介绍及集群搭建

一、zookeeper介绍 zookeeper官网:Apache ZooKeeper zookeeper是一个分布式协调框架,保证的是CP,即一致性和分区容错性;zookeeper是一个分布式文件存储系统,文件节点可以存储数据,监听子文件节点等可以实…

绥化市中心广场焕发新活力:OLED透明拼接屏的奇观展示

OLED透明拼接屏技术在绥化城市的应用引起了广泛关注。 绥化市位于中国东北地区,是黑龙江省的一个重要城市。 该市拥有悠久的历史,历经多个朝代的兴衰。绥化的历史背景赋予了这座城市独特的文化底蕴和魅力。 绥化市内有许多著名景点,其中最…

day

#include <iostream> using namespace std; class Per {//算术运算符friend const Per operator(const Per &k1,const Per &k2);friend const Per operator-(const Per &k1,const Per &k2);friend const Per operator*(const Per &k1,const Per &…

vue项目npm intall时发生版本冲突的解决办法

在日常使用命令npm install / npm install XX下载依赖的操作中&#xff0c;我经常会遇到无法解析依赖树的问题&#xff08;依赖冲突&#xff09; 当遇到这种情况的时候&#xff0c;可以通过以下命令完成依赖安装&#xff1a; npm install --legacy-peer-deps npm install xxx…

国产化即时通讯平台WorkPlus,助力企业实现自主可控的沟通与协作

作为在线沟通与协作的重要工具&#xff0c;即时通讯平台在企业中扮演着不可或缺的角色。然而&#xff0c;为了保护企业的核心数据和机密信息&#xff0c;越来越多的企业开始转向国产化的即时通讯平台。在这一背景下&#xff0c;国内软件品牌WorkPlus应运而生&#xff0c;为企业…

基于 chinese-roberta-wwm-ext 微调训练中文命名实体识别任务

一、模型和数据集介绍 1.1 预训练模型 chinese-roberta-wwm-ext 是基于 RoBERTa 架构下开发&#xff0c;其中 wwm 代表 Whole Word Masking&#xff0c;即对整个词进行掩码处理&#xff0c;通过这种方式&#xff0c;模型能够更好地理解上下文和语义关联&#xff0c;提高中文文…

mongodb简介、安装、搭建复制集

一、 简介 NoSQL数据库四大家族&#xff1a;列存储 Hbase&#xff0c;键值(Key-Value)存储 Redis&#xff0c;图像存储 Neo4j&#xff0c;基于分布式文档存储的数据库MongoDb。 MongoDB 和关系型数据库对比 关系型数据库MongoDBdatabase&#xff08;库&#xff09;database&…

.net也能写内存挂

最近在研究.net的内存挂。 写了很久的c,发现c#写出来的东西实在太香。 折腾c#外挂已经有很长时间了。都是用socket和c配合。 这个模式其实蛮成功的&#xff0c;用rpc调用的方式加上c#的天生await 非常好写逻辑 类似这样 最近想换个口味。注入托管dll到非托管进程 这样做只…

基于 SOFAJRaft 实现注册中心

文章目录 1.前言2.git 示例地址3.官网示例分析3.SOFAJRAFT 注册中心实现&#xff08;服务端&#xff09;3.1 核心功能3.2 模块设计3.3 请求消息数据结构设计3.3.1 Registration 注册消息3.3.2 GetServiceInstancesRequest 获取服务实例请求3.3.3 GetServiceInstancesResponse 获…

Android中级——ListView和RecycleView解析

ListView和RecycleView ListViewRecycleView ListView 使用步骤可看Android基础——ListView&#xff0c;其setAdapter()如下&#xff0c;回调getCount()获取Item个数 Override public void setAdapter(ListAdapter adapter) {if (mAdapter ! null && mDataSetObserv…

v-model绑定input、textarea、checkbox、radio、select

1.input <div><!-- v-model绑定input --><input type"text" v-model"message"><h2>{{message}}</h2></div><script>const App{template:#my-app,data() {return {message:Hello World,}},}Vue.createApp(App).…

Java:设计模式之结构型-装饰者模式(decorator pattern)

装饰者模式(decorator pattern): 动态地将责任附加到对象上 意图&#xff1a;为对象动态添加功能 类图 实现 设计不同种类的饮料&#xff0c;饮料可以添加配料&#xff0c;比如可以添加牛奶&#xff0c;并且支持动态添加新配料。每增加一种配料&#xff0c;该饮料的价格就…

微信怎么查看名下所有微信号?

一般大家都会有两个或者更多的微信号&#xff0c;那怎么知道自己名下有几个微信号呢&#xff1f; 微信号要使用支付或者其他一些功能是要实名才可以使用的&#xff0c;有时候不知道自己的名下绑定了多少微信号&#xff0c;怎么查询呢&#xff1f; 微信最近出了开通小号的功能&…

当下测试行业中UI自动化面临的难点及如何解决

经常有人会问&#xff0c;什么样的项目才适合进行UI自动化测试呢&#xff1f;UI自动化测试相当于模拟手工测试&#xff0c;通过程序去操作页面上的控件。而在实际测试过程中&#xff0c;经常会遇到无法找到控件&#xff0c;或者因控件定义变更而带来的维护成本等问题。 哪些场…