前言
excel 后缀有2种格式, .xls 是从 Excel 97 到 Excel 2003 的默认文件格式,而 .xlsx 是 Excel 2007 及更高版本的默认文件格式。
.xlsx和.xls格式的主要区别在于,.xls格式单个工作表最多支持65536行,256列。
.xlsx格式最多支持1048576行,16384列。
此外就是,存储同样多的数据,.xlsx格式文件更小。基本就这两点区别。
如果你想学习接口自动化测试,我这边给你推荐一套视频,这个视频可以说是B站播放全网第一的接口自动化测试教程,同时在线人数到达1000人,并且还有笔记可以领取及各路大神技术交流:798478386
【已更新】B站讲的最详细的Python接口自动化测试实战教程全集(实战最新版)_哔哩哔哩_bilibili【已更新】B站讲的最详细的Python接口自动化测试实战教程全集(实战最新版)共计200条视频,包括:1.【接口自动化】目前软件测试的市场行情以及测试人员能力标准。、2.【接口自动化】全面熟练Requests库以及底层方法调用逻辑、3.【接口自动化】接口自动化实战及正则和JsonPath提取器的应用等,UP主更多精彩视频,请关注UP账号。https://www.bilibili.com/video/BV17p4y1B77x/?spm_id_from=333.337&vd_source=488d25e59e6c5b111f7a1a1a16ecbe9a
处理excel
python 可以使用xlrd,xlrwt,openpyxl,xlwings,pandas 等库操作 Excel 。
环境安装
文档操作
性能对比
参考链接Python杀死Excel?众多模块哪家强[1]
xlwt 操作
使用xlwt 操作 excel, 保存 .xls 后缀的文件
import xlwt
def csv_xls(filename, xlsname):
f = open(filename, 'r', encoding='utf-8')
xls = xlwt.Workbook()
sheet = xls.add_sheet('sheet1', cell_overwrite_ok=True)
x = 0
for line in f:
for i in range(len(line.split(','))):
print(i)
item = line.split(',')[i]
sheet.write(x, i, item)
x += 1
f.close()
xls.save(xlsname)
if __name__ == "__main__":
filename = "test1.csv"
xlsname ="res1.xls"
csv_xls(filename,xlsname)
xlwt 库仅支持.xls 后缀,不支持.xlsx 后缀的excel 文件
openpyxl 操作
使用openpyxl 库将 csv 转成 .xlsx格式。
from openpyxl import Workbook
import datetime
def csv_to_xlsx_pd(sourcePath:str,savePath:str,encode='utf-8'):
"""将csv 转为 excel(.xlsx格式)
如果不需要可以把计时相关代码删除
Args:
sourcePath:str 来源文件路径
savePath:str 保存文件路径,需要包含保存的文件名,文件名需要是 xlsx 格式的
encode='utf-8' 默认编码,可以改为需要的编码如gbk
"""
print('开始处理%s' % sourcePath)
curr_time = datetime.datetime.now()
print(curr_time)
f = open(sourcePath, 'r', encoding=encode)
# 创建一个workbook 设置编码
workbook = Workbook()
# 创建一个worksheet
worksheet = workbook.active
workbook.title = 'sheet'
for line in f:
row = line.split(',')
worksheet.append(row)
# if row[0].endswith('00'): # 每一百行打印一次
# print(line, end="")
workbook.save(savePath)
print('处理完毕')
curr_time2 = datetime.datetime.now()
print(curr_time2-curr_time)
if __name__ == '__main__':
source = 'source.csv'
save = 'result.xlsx'
csv_to_xlsx_pd(sourcePath=source, savePath=save, encode='utf-8')
数据量小于1w操作会比较快,数据量大于50w, workbook.save()
保持数据会很慢,有时候需要20-30分钟才能保存完成。
使用 pandas 转d
使用 pandas 将csv 转xlsx
import pandas as pd
def csv_to_xlsx_pd():
csv = pd.read_csv('source.csv', encoding='utf-8')
csv.to_excel('result.xlsx', sheet_name='data')
if __name__ == '__main__':
csv_to_xlsx_pd()
数据量小于1w操作会比较快,数据量大于50w,保存会很慢。
References
[1]
Python杀死Excel?众多模块哪家强: http://mp.weixin.qq.com/s?__biz=MzI3NzI1MzY4Mw==&mid=2247493580&idx=1&sn=3bb272e1f187b1993a88f2578aa0d470&chksm=eb6bbc90dc1c358687b47c05a34df9343b70ab2e3365915ba94c2890f81c6a11ed5d423391d2&scene=21#wechat_redirect