• 重制版 day 18 CSV和excel文件操作


    CSV和excel文件操作

    csv文件叫逗号分隔值文件-每一行都是通过逗号来区分出不同的列

    csv文件可以直接通过excel打开,以行列的形式保存和显示数据,csv文件只能存储数据,不能保存公式和函数

    csv读操作

    打开文件的两种方式:

    1)文件对象=open(文件路径)

    ​ 操作文件

    ​ 文件对象。close()

    2)with open(文件路径) as 文件对象:

    ​ 操作文件

    csv读操作流程:

    1)创建打开csv文件

    2)创建reader获取文件内容

    获取文件内容两种方式:

    csv.reader(文件对象)–获取文件内容返回一个迭代器,并以列表为单位返回每一行内容

    csv.DictReader(文件对象)–获取文件内容返回一个迭代器,并以字典为单位从第二行开始返回每一行内容

    csv写操作

    csv文件写操作流程:

    1)打开文件

    2)创建writer对象

    创建writer对象的方式有两种:

    1)csv.writer(文件对象)-创建writer对象,这个对象写入的时候以列表为单位写入

    2)csv.DictWriter(文件对象,键列表)-创建writer对象,以字典为单位写入

    writer.writeheader()–以字典写入,写入文件头

    3)写入方式,单行写入,多行写入

    writer.writerow -单行写入

    writer.writerows-多行写入

    # # a.以列表为单位写入一行内容
    writer=csv.writer(f)
    # 一行写入一行内容
    writer.writerow(['姓名','出生日期','性别','电话'])
    writer.writerow(['小白','1999-9-9','男','789231'])
    
    # # 一次写入多行内容
    writer.writerows([
        ['小红','1996-6-9','女','7892321'],
        ['小蓝','2000-2-3','男','7891231']
    ])
    
    
    # b.以字典为单位写写入一行内容
    writer=csv.DictWriter(f,['姓名','出生日期','性别','电话'])
    # 写入文件头(将字典的键写入文件开头
    writer.writeheader()
    # 一次写入一行
    writer.writerow({'姓名':'xiaoming','出生日期':'1999-9-9','性别':'男','电话':'110'})
    
    # 一次写入多行
    writer.writerows([
        {'姓名':'xiaoning','出生日期':'1996-5-9','性别':'男','电话':'111230'},
        {'姓名':'xiaohong','出生日期':'1999-9-24','性别':'女','电话':'10230'}]
    )
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25

    excel文件的读写操作

    使用execl相关操作,必须先导入模块

    import openpyxl
    
    • 1

    execl基本认识:

    工作簿:一个excel文件就是一个工作簿

    工作表:一个工作簿可以有多个工作表(至少一个)

    单元格:单元格是excel文件保存数据的基本单位

    行号和列号:用来确定单元格位置

    获取execl文件内容

    1)打开excel文件创建工作簿对象

    打开方式有两种:

    openpyxl.open(文件路径)

    openpyxl.load_workbook(文件路径)

    获取工作簿中所有的工作表的表名

    工作簿对象.sheetnames

    2)获取工作表

    工作簿对象.active -获取活跃表(即关闭文件的所处位置的工作表)

    工作簿对象[工作表名称]-获取指定名称对应的工作表

    3)获取单元格

    工作表对象.cell(行号,列号) row代表行,column代表列

    4)获取单元格内容

    单元格对象.value

    5)获取最大行号和最大列号(数据的有效行和有效列)

    工作表对象.max_row 最大行

    工作表对象.max_column 最大列

    # 获取一个工作表中的所有单元格数据
    for row in range(1,工作表.max_row+1):
        column=[]
        for col in range(1,工作表.max_column+1):
            cell=工作表.cell(row,col)
            column.append(cell.value)
        print(column)
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7

    excel文件写操作

    对excel进行写操作后,操作完成后必须保存,否则操作无效

    写操作流程:

    1.新建工作簿

    1)新建工作簿对象

    workbook=openpyxl.Workbook()

    2)保存

    工作簿对象.save(文件路径)

    在实际i情况中,新建的时候需要判断工作簿对应的文件是否已经存在,存在就直接打开,不存在才创建

    有两种方式判断:

    # 方法1:利用异常捕获
    try:
        workbook=openpyxl.open('files/student2.xlsx')
    except FileNotFoundError:
        workbook=openpyxl.Workbook()
        workbook.save('files/student2.xlsx')
    
    # 方法2:
    import  os
    # # os.path.exists(文件路径) -判断指定文件是否存在,存在返回True,不存在返回False
    if os.path.exists('files/student2.xlsx'):
    	 workbook=openpyxl.open('files/student2.xlsx')
    else:
         workbook=openpyxl.Workbook
         workbook.save('files/student2.xlsx')
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15

    2.工作表的写操作

    1)新建工作表

    工作簿对象.crete_sheet(表名, 下标)

    工作簿对象.crete_sheet()

    实际情况中,判断工作表是否存在

    if 'Python'in workbook.sheetnames:
        sheet=workbook['Python']
    else:
        sheet=workbook.create_sheet('Python')
        workbook.save('files/student2.xlsx')
    
    • 1
    • 2
    • 3
    • 4
    • 5

    2)删除工作表

    工作簿对象.remove(工作表对象)

    工作表对象表示方法:工作簿对象[表名]

    3.单元格的写操作

    单元格对象.value=数据-没有就新增,修改数据直接改数据,删除将数据变成空值

    工作表对象.cell(行号,列号).value=数据

  • 相关阅读:
    信息系统项目管理-项目合同管理-十三
    【无标题】
    如何禁止公司电脑文件上传到网络
    两种PDF密码都忘记了,怎么办?
    深入理解zookeeper
    JAVASE语法零基础——Object类
    V831——AprilTag标签识别
    nordic的nrf52系列32M速率的SPI-SPIM3
    vconsole本地调试工具
    【push,pop,shift,unshift】手写数组push,pop,shift,unshiftt方法
  • 原文地址:https://blog.csdn.net/Feifei_peng/article/details/126273950