一,模块对比
1,Python 中csv模块为纯文本模块,没有行数上限,而xlrd模块仅支持row=65536,column=256数据,所以一般大数据时,采用csv模块或者openpyxl模块;
2,openpyxl模块从1开始计数,而csv模块和xlrd模块从0开始计数
3,在数据量较小时,三方运行速度差不多,但是数据量较大时,openpyxl模块运行速度则会慢很多;csv模块基本都是基于列表操作,所以运行速度也会慢很多;
4,当定位某一具体的单元格内容时,csv模块需要遍历行和列的列表,但是openpyxl模块和xlrd模块,就能具体得到;
二,xlrd模块
xlrd模块(只读模式)
• 导入xlrd库
import xlrd
• 打开xlsx文件
table = xlrd.open_workbook(r'文件路径')
• 定位sheet工作表
sheettable=table.sheet_by_name('表单名称')
• 获取总行数
max_rows = sheetable.nrows
• 获取总列数
max_cols = sheetable.ncols
• 获取行内容
row_values = sheettable.row_values(0)
内容会保存为一个列表
• 获取列内容
col_values = sheettable.col_values(0)
内容会保存为一个列表
• 获取单元格内容
values = sheettable.cell_value(行号,列号)
以0开始;
三,xlutils模块
xlutils模块(修改/追加模式)
• 导入xlutils库
from xlutils.copy import copy
• 将xlrd对象拷贝转化为xlwt对象
date = copy(table)
• 定位sheet表单
sheetable=date.get_sheet(0)
• 追加/修改数据
sheetable.write(行号,列号,'内容')
• 保存文件
date.save(r'文件路径')
四,xlwt模块
xlwt模块(写入覆盖模式)
写入数据相当于重新新建了一个表格文件,所以xlrd读出来的数据也会被覆盖掉,
• 新建一个workbook文件
data = xlwt.Workbook(encoding='utf-8')
• 新建一个sheet工作表
sheet = data.add_sheet('表单名称',cell_overwrite_ok=False)
cell_overwrite_ok=True 为不覆盖表,默认为False
• 往单元格里写入数据
sheet.write(行号,列号,'写入内容')
• 保存表格
data.save(文件路径)
五,openpyxl模块
• 安装openpyxl库
pip install openpyxl
• 导入openpyxl库
import openpyxl
• 打开一个EXCEL文件
table = openpyxl.load_workbook('文件路径')
• 获取sheet工作表名称
sheetname= table.active
取到的名称会组成一个列表;
• 定位到sheet工作表
sheet = table['sheet表单名称']
• 获取表格行数
rowno = sheet.max_row
• 获取单元格内容
values=sheetable.cell(行号,列号).value
• 写入数据
values1=sheet.cell(row=行号,column=列号, value='内容')
• 保存文件
table.save('文件路径')
六,csv模块
• 导入csv库
import csv
• 打开csv文件
p1=Path('文件路径/1234.csv')
• 读取表格内容为列表格式
with p1.open('r+',encoding='utf-8',newline='') as f :
p1 = csv.reader(f)
for i in p1:
print(i)
• 读取表格内容为字典格式
with p1.open('r+',encoding='utf-8',newline='') as f :
p1 = csv.DictReader(f)
for i in p1:
print(i)
• 获取某一列的内容
i[key]
• 往csv文件内写入内容
tada="""\
表头1,表头2,表头3,表头4
v1-1,v1-2,v1-3,v1-4,
v2-1,v2-2,v2-3,v2-4,
"""
with p1.open('w+',encoding='utf-8') as f :
f.write(tada)
• 往csv文件内追加行
tada=[[行1],[行2]]
with p1.open('a',encoding='utf-8',newline='') as f :
p = csv.writer(f)
p.writerows(tada[0:])
• 备注:
写入时,行之间用逗号隔开,内容用三引号括起来;
newline='' 作用是调整换行符格式;
csv模块会自动新建和保存文件,不用save
8694

被折叠的 条评论
为什么被折叠?



