学习的第九天 Day9 python对Excel文件的读写操作
Day9 Excel的读写
微软的Excel
后缀名:.xls、.xlsx
-
.xls:Excel 2007以前的文件后缀名。最多容纳256列和16384行数据。 .xlsx:Excel 2007开始文件使用的后缀名。最多容纳16384列和1048576行数据。 Excel 2007开始兼容xlsxlsx后缀名。 ----> 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!
上一篇:
通过多线程提高代码的执行效率例子
下一篇:
10分钟掌握对偶单纯形法