python-day9-Excel文件后缀名为xlsx的读写
一、使用OS模块读取文件名
(一)导入os模块用到的包-os
import os
(二)用listdir()方法
能够读取指定文件夹下的所有子文件。
file_list = os.listdir('./成都链家二手房数据')
print(file_list, type(file_list))
打印出来的效果:
[‘.ipynb_checkpoints’, ‘成都双流二手房信息.csv’, ‘成都大邑二手房信息.csv’, ‘成都天府新区二手房信息.csv’, ‘成都天府新区南区二手房信息.csv’, ‘成都崇州二手房信息.csv’, ‘成都彭州二手房信息.csv’, ‘成都成华二手房信息.csv’, ‘成都新津二手房信息.csv’, ‘成都新都二手房信息.csv’, ‘成都武侯二手房信息.csv’, ‘成都温江二手房信息.csv’, ‘成都简阳二手房信息.csv’, ‘成都蒲江二手房信息.csv’, ‘成都邛崃二手房信息.csv’, ‘成都郫都二手房信息.csv’, ‘成都都江堰二手房信息.csv’, ‘成都金堂二手房信息.csv’, ‘成都金牛二手房信息.csv’, ‘成都锦江二手房信息.csv’, ‘成都青白江二手房信息.csv’, ‘成都青羊二手房信息.csv’, ‘成都高新二手房信息.csv’, ‘成都高新西二手房信息.csv’, ‘成都龙泉驿二手房信息.csv’] <class ‘list’>
(三)获取该目录下所有后缀名为.csv的文件
遍历file_list
for i in file_list:
if i[-4:] == '.csv':
print(i)
打印结果:
成都双流二手房信息.csv 成都大邑二手房信息.csv 成都天府新区二手房信息.csv 成都天府新区南区二手房信息.csv 成都崇州二手房信息.csv 成都彭州二手房信息.csv 成都成华二手房信息.csv 成都新津二手房信息.csv 成都新都二手房信息.csv 成都武侯二手房信息.csv 成都温江二手房信息.csv 成都简阳二手房信息.csv 成都蒲江二手房信息.csv 成都邛崃二手房信息.csv 成都郫都二手房信息.csv 成都都江堰二手房信息.csv 成都金堂二手房信息.csv 成都金牛二手房信息.csv 成都锦江二手房信息.csv 成都青白江二手房信息.csv 成都青羊二手房信息.csv 成都高新二手房信息.csv 成都高新西二手房信息.csv 成都龙泉驿二手房信息.csv
二、Excel介绍
微软的Excel有两种后缀名:.xls、.xlsx
.xls: Excel2007以前的文件后缀名。最多容纳256列,16000+行数据。—>xlwt、xlrd
.xlsx: Excel 2007开始文件使用的后缀名。最多容纳16000+列,1048567行数据。—>openpyxl Excel 2007开始兼容xls、xlsx后缀名。
python 能够操作Excel的模块: openpyxl、xlsxwriter、xlwt、pandas、xlrd、win32com、xlutils等。 新版本xlsx: openpyxl。 旧版本xls: xlwt、xlrd。
三、第三方模块的安装-对xlsx操作
(一)可以使用cmd直接输入下面的命令
windows: pip install 第三方模块
mac、linux: pip3 install 第三方模块
(二)安装模块到虚拟环境
1.激活虚拟环境。
2.有(venv)则表示虚拟环境已激活。直接在>后面输入pip install openpyxl命令 3.没有的话 使用 .venv/scripts/activate 进行虚拟环境激活。 如果·报错:微软禁用了终端执行脚本的功能。 使用Set-ExecutionPolicy -ExecutionPolicy RemoteSigned -Scope CurrentUser解除禁用。 再次执行.venv/scripts/activate
(三)点击pycharm界面
file->Settings
四、Excel文件后缀名.xlsx的写操作
工作簿:一个Excel文件就是一个工作簿。 工作表:一个工作簿的多张表格。 单元格:存储信息的方格
(一)首先导入安装的第三方模块
import openpyxl
(二)新建一个Excel文件—工作簿
Workbook(): 新建文件
file = openpyxl.Workbook()
(三)操作工作表
1.create_sheet(表名,下标)
create_sheet(表名,下标): 创建工作表对象。
file.create_sheet('学生成绩', 0)
file.create_sheet('学生成绩1')
表格效果:
2.sheetnames
sheetnames: 查看工作表中已经存在的工作表。
print(file.sheetnames)
打印结果:
[‘学生成绩’, ‘Sheet’, ‘学生成绩1’]
3.remove(表)
remove(表): 移除工作表。表:工作簿对象[工作表]
file.remove(file['Sheet'])
print(file.sheetnames)
结果:
[‘学生成绩’, ‘学生成绩1’]
4.插入信息
方法一:
使用cell(行号,列号)定位单元格。
value: 获取单元格的内容。
print(file['学生成绩'].cell(1, 1).value)
file['学生成绩'].cell(1, 1).value = '姓名'
print(file['学生成绩'].cell(1, 1).value)
file['学生成绩'].cell(1, 2).value = '性别'
打印:
None 姓名
写入效果:
方法二:
使用[列号行号]定位单元格。
file['学生成绩']['AAA1'] = '姓名'
print(file['学生成绩']['AAA1'].value)
打印:
姓名
表格效果:
(四)保存文件并重命名文件
file.save('./学生成绩.xlsx')
最后效果:
(五)总的代码
import openpyxl
file = openpyxl.Workbook()
file.create_sheet('学生成绩', 0)
file.create_sheet('学生成绩1')
print(file.sheetnames)
file.remove(file['Sheet'])
print(file.sheetnames)
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文件后缀名.xlsx读操作
(一)首先导入安装的第三方模块
import openpyxl
(二)加载xlsx文件
file = openpyxl.load_workbook('./成都链家二手房.xlsx')
ws = file['成都链家二手房数据汇总']
(三)获取最大行和最大列
rows = ws.max_row
col = ws.max_column
(四)遍历输出
for i in range(1, rows + 1):
for j in range(1, col + 1):
print(ws.cell(i, j).value)
会输出成都链家二手房数据汇总表里面的所有数据,由于数据量大,就不把结果放这里了,可以自己输出一个数据少的表。
(五)总的代码
import openpyxl
file = openpyxl.load_workbook('./成都链家二手房.xlsx')
ws = file['成都链家二手房数据汇总']
rows = ws.max_row
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文件后缀名为.xls写操作
(一)安装第三方模块:xlwt、xlrd
pip install xlwt xlrd
(二)导入第三方模块:xlwt-写
import xlwt
import random
(三)创建文件
add_sheet: 创建工作表+调用
wb = xlwt.Workbook()
sheet1 = wb.add_sheet('一年级一班成绩')
sheet2 = wb.add_sheet('一年级二班成绩')
sheet3 = wb.add_sheet('一年级三班成绩')
(四)写入数据
工作表.write(row, col, content)
names = ['张飞', '刘备', '关羽', '貂蝉', '曹操']
for i in range(len(names)):
sheet1.write(i, 0, names[i])
for j in range(1,4):
sheet1.write(i, j, random.randint(0, 100))
(五)保存关闭
wb.save('一年级成绩表.xls')
(六)总的代码和写入效果
import xlwt
import random
wb = xlwt.Workbook()
sheet1 = wb.add_sheet('一年级一班成绩')
sheet2 = wb.add_sheet('一年级二班成绩')
sheet3 = wb.add_sheet('一年级三班成绩')
names = ['张飞', '刘备', '关羽', '貂蝉', '曹操']
for i in range(len(names)):
sheet1.write(i, 0, names[i])
for j in range(1,4):
sheet1.write(i, j, random.randint(0, 100))
wb.save('一年级成绩表.xls')
表格效果:
七、Excel文件后缀名为.xls读操作
(一)导入xlrd模块
import xlrd
(二)打开文件
wb = xlrd.open_workbook('一年级成绩表.xls')
(三)获取数据
1.sheet_names():查看存在的所有工作表 2.sheet_by_index() 3.sheet_by_name() 4.获取行列数:nrows----获取最大行数;ncols----获取最大列数
print(wb.sheet_names())
ws = wb.sheet_by_index(0)
print(ws.cell(0, 0).value)
ws1 = wb.sheet_by_name('一年级一班成绩')
print(ws1.cell(0, 0).value)
print(ws1.nrows, ws1.ncols)
表是上一步创建的表。 输出: [‘一年级一班成绩’, ‘一年级二班成绩’, ‘一年级三班成绩’] 张飞 张飞 5 4
八、csv文件数据写入xlsx
(一)导入需要用到的包
import os
import csv
import openpyxl
(二)新建工作簿和工作表用来存放数据
file = openpyxl.Workbook()
file.create_sheet('成都链家二手房数据汇总')
(三)读出csv文件里面的数据
先用os模块的listdir读出所有需要整合的数据文件。
遍历每一个文件用cell(行号,列号)方法写入xlsx文件。
行号 = 循环次数(每遍历一次获取一行数据)。
列号 = 每一行的长度,下标要加一,因为下标从0开始。
file_list = os.listdir('./成都链家二手房数据')
print(file_list)
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 k in range(0, len(j)):
file['成都链家二手房数据汇总'].cell(count, k + 1).value = j[k]
f.close()
(四)保存为xlsx文件
file.save('./成都链家二手房.xlsx')
print('数据写入完成!')
(五)总的代码
import os
import csv
import openpyxl
file = openpyxl.Workbook()
file.create_sheet('成都链家二手房数据汇总')
file_list = os.listdir('./成都链家二手房数据')
print(file_list)
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 k in range(0, len(j)):
file['成都链家二手房数据汇总'].cell(count, k + 1).value = j[k]
f.close()
file.save('./成都链家二手房.xlsx')
print('数据写入完成!')
九、openpyxl和xlwt、xlrd对比
1.openpyxl行列号从1开始;xlwt、xlrd行列号从0开始
2.两者都可以对工作表进行操作。
3.两者都可以用单元格定位的形式进行单元格操作。
4.xlwt写操作使用过write()写
|