学习的第九天 Day9 python对Excel文件的读写操作

这篇博客介绍了如何使用Python进行Excel文件的读写操作,包括使用openpyxl模块创建新的Excel文件、操作工作表、写入数据,以及CSV文件的写入。文章强调了CSV文件在效率和功能上的优势,并提供了具体的代码示例。
摘要由CSDN通过智能技术生成

Day9 Excel的读写

微软的Excel

后缀名:.xls、.xlsx

  • .xls:Excel 2007以前的文件后缀名。最多容纳256列和16384行数据。
  • .xlsx:Excel 2007开始文件使用的后缀名。最多容纳16384列和1048576行数据。
  • Excel 2007开始兼容xls\xlsx后缀名。 ----> openpyxl

1. python能够操作Excel的模块:

openpyxl、xlsxwriter、xlwt、pandas、xlrd、win32com、xlutils等

a. 安装三方模块
  • windows:pip install xxx
  • mac、linux:pip3 install xxx
b.如何安装模块到虚拟环境:
  • 1.激活虚拟环境。
  • 2.(venv) --> 虚拟环境已激活
    使用 ./venv/scripts/activate 进行虚拟环境激活
    报错:微软禁用了终端脚本的功能。

使用命令Set-ExecutionPolicy -ExecutionPolicy RemoteSigned -Scope CurrentUser解除禁用
再次执行 ./venv/scripts/activate

c.查看已经安装过的模块:pip list
  • 工作簿:一个Excel文件就是一个工作簿
  • 工作表:一个工作簿的多张表格
  • 单元格:存储信息的方格

2. 对Excel表的操作

2.1.新建一个Excel文件

新建文件:Workbook()

import openpyxl
file = openpyxl.Workbook() # 加载工作簿

如果文件存在:openpyxl.load_workbook(文件路径和文件名)

2.2.操作工作表

一个工作表对象:create_sheet(表名, 下标)
如果直接在工作簿最后追加工作表,下标参数不用写;如下:
file.create_sheet(‘学生成绩1’)

file.create_sheet('学生成绩', 0)

查看工作簿中已经存在的工作表:sheetnames

print(file.sheetnames)

移除工作表:remove(表) --> 表:工作簿对象[工作表]

file.remove(file['Sheet'])

从学生成绩工作表插入信息
方法一:使用cell(行号,列号)定位单元格
cell(行号,列号) --> 定位单元格
value --> 获取单元格的内容

print(file['学生成绩'].cell(1, 1).value)
file['学生成绩'].cell(1, 1).value = '姓名'
print(file['学生成绩'].cell(1, 1).value)
file['学生成绩'].cell(1, 2).value = '性别'

方法二:使用[列号,行号]定位单元格

file['学生成绩']['AAA1'] = '姓名'
print(file['学生成绩']['AAA1'].value)

保存文件(在最后保存)

file.save('./学生成绩.xlsx')

运行结果
在这里插入图片描述
Excel文档的结果
在这里插入图片描述

3. CSV文件数据写入

import os
import csv
import openpyxl

# 新建xlsx后缀名文件
file = openpyxl.Workbook()

file.create_sheet('成都链家二手房数据汇总')
#  -----------------------------------------------
# 从原数据文件读数据
# listdir():能够读取指定文件夹下的所有子文件
file_list = os.listdir('./成都链家二手房数据')
print(file_list)
# count作用:计数进行行号的递增
count = 0
for i in file_list:
    if i[-9:] == '二手房信息.csv' and i[:2] == '成都':
        f = open(f'./成都链家二手房数据/{i}', 'r', encoding='utf-8')
        read_data = csv.reader(f)
        for j in read_data:
            count += 1
            for x in range(0, len(j)):
                # 根据每一条数据长度判断写n列
                file['成都链家二手房数据汇总'].cell(count, x+1).value =j[x]
        f.close()
#  -----------------------------------------------
file.save('./成都链家二手房.xlsx')
print('数据写入完成')

运行结果
在这里插入图片描述

4. Excel读-xlsx版

import openpyxl

# max_row
# max_col
file = openpyxl.load_workbook('./成都链家二手房.xlsx')
# 从工作簿中找工作表
ws = file['成都链家二手房数据汇总']
# max_row:获取xlsx文件中最大行数
rows = ws.max_row
# max_column:获取xlsx文件中最大列数
col = ws.max_column
# 行
for i in range(1, rows + 1):
    # 列
    for j in range(1, col + 1):
        print(ws.cell(i, j).value)

运行结果(数据较长,截取的最后部分)
在这里插入图片描述
:Excel操作会比CSV文件要慢很多,而且CSV会更加强大,建议大家日后使用CSV文件来操作。

Day 9 over!

评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值