当前位置: 首页 > 工具软件 > Excel Writer > 使用案例 >

csv和excel文件操作

袁青青
2023-12-01

csv文件读操作

什么是csv文件

csv文件叫逗号分隔值文件

每一行内容是通过逗号来区分出不同的列

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

csv读操作

import csv

创建打开csv文件
"""
文件对象 = open()
文件对象.close()

with open() as 文件对象:
    操作文件
"""

举例:

f = open('电影.csv', 'r', encoding='utf-8')
创建reader获取文件内容
"""
csv.reader(文件对象)        -   获取文件内容,并且以列表为单位返回每一行内容
csv.DictReader(文件对象)    -   获取文件内容,并且以字典为单位返回第2行开始的每一行内容(字典的键是第一行内容)
"""
import csv

f = open('电影.csv', 'r', encoding='utf-8')
reader1 = csv.reader(f)
print(list(reader1))
reader2 = csv.DictReader(f)
print(list(reader2))

csv文件写操作

打开文件

f = open('data.csv', 'w', encoding='utf-8')

如果没有文件,则会自动创建

创建writer对象

"""
csv.writer(文件对象)            -   创建writer对象,这个对象在写入数据的时候一行对应一个列表

csv.DictWriter(文件对象,键列表)        -   创建writer对象,以字典为单位写入数据
"""
以列表为单位写入一行内容
writer = csv.writer(f)

一次写入一行内容

writer.writerow(['姓名', '出生日期', '性别', '电话'])
writer.writerow(['小明', '2001', '男', '110'])

一次写入多行内容

writer.writerows([
    ['小花', '2001', '女', '110'],
    ['小华', '2001', '女', '110']
])
以字典为单位写入一行内容
writer = csv.DictWriter(f, ['姓名', '出生日期', '性别', '电话'])

写入文件头(将字典的键写入到文件开头)

writer.writeheader()

一次写入一行内容

writer.writerow({'姓名': '小明', '出生日期': '2000-2-3', '性别': '男', '电话': '112'})

一次写入多行内容

writer.writerows([
    {'姓名': '小花', '出生日期': '2000-2-3', '性别': '男', '电话': '112'},
    {'姓名': '小华', '出生日期': '2000-2-3', '性别': '男', '电话': '112'}
])

虚拟环境

系统环境

安装python就可以为计算机提供一个python的系统环境

虚拟环境

程序员根据需要自己创建的python环境

能够创建虚拟环境的前提:存在系统环境

环境的作用

  1. 提供python解释器

  2. 提供第三方库

    虚拟环境的存在可以让第三方库根据类别或者项目分开管理

使用虚拟环境的建议

  1. 工作的时候:一个项目一个虚拟环境,并且将虚拟环境直接放在项目中
  2. 学习的时候:一类项目一个虚拟环境,不同类别的虚拟环境全部放在一个地方

怎么创建虚拟环境

使用pycharm创建
使用指令创建

excel文件读操作

认识excel文件

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

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

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

行号和列号:可以确定单元格位置

获取excel文件内容

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

openpyxl.open(excel文件路径)

openpyxl.load_workbook(excel文件路径)

import openpyxl

workbook = openpyxl.open('三国人物数据.xlsx')
# 或者
workbook = openpyxl.load_workbook('三国人物数据.xlsx')
获取工作表

工作簿对象.active - 获取活跃表(选中的表)

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

sheet1 = workbook.active
print(sheet1)

sheet2 = workbook['工作表名称']
print(sheet2)

如果要获取工作簿中所有的工作表表名

workbook.sheetnames

result = workbook.sheetnames
print(result)
获取单元格

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

cell1 = sheet2.cell(8, 1)
cell2 = sheet2.cell(12, 1)
print(cell1, cell2)
获取单元格内容

单元格对象.value

print(cell1.value)
print(cell2.value)
获取最大行号和最大列号(保存了数据的有效行和有效列)

工作表对象.max_row

工作表对象.max_column

print(sheet2.max_row)
print(sheet2.max_column)

excel文件写操作

注意:不管是以什么样的方式对excel进行写操作,操作完成之后必须保存

新建工作簿

新建工作簿对象

openpyxl.Workbook()

例如:

workbook = openpyxl.Workbook()
保存

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

实际中新建工作簿的时候需要先判断工作簿对应的文件是否已经存在,存在就不需要新建,不存在才新建

法一

try:
    workbook = openpyxl.open('student2.xlsx')
except FileNotFoundError:
    workbook = openpyxl.Workbook()
    workbook.save('student2.xlsx')

法二

os.path.exists(文件路径) - 判断指定文件是否存在,存在返回True,不存在返回False

import os

if os.path.exists('student2.xlsx'):
    workbook = openpyxl.open('student2.xlsx')
else:
    workbook = openpyxl.Workbook()
    workbook.save('student2.xlsx')

工作表的写操作

新建工作表

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

实际中的新建表:没有的时候才新建,有的时候直接打开

if 'Python' in workbook.sheetnames:
    sheet = workbook['Python']
else:
    sheet = workbook.create_sheet('Python')
    workbook.save('student2.xlsx')
删除工作表

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

workbook.remove(workbook['Sheet1'])
workbook.save('student2.xlsx')

实际中删除表:存在的时候才能删

if 'Sheet1' in workbook.sheetnames:
    workbook.remove(workbook['Sheet1'])
    workbook.save('student2.xlsx')

单元格的写操作

单元格对象.value = 数据

java_sheet = workbook['Java']
java_sheet.cell(1, 3).value = '电话'
java_sheet.cell(2, 1).value = None
java_sheet.cell(4, 2).value = 'stu003'

workbook.save('student2.xlsx')
 类似资料: