前言
之前在学爬虫的时候,有学到用Python将爬取的数据保存在excel中,不过只是用xlwt库
进行写操作。
昨天,一个应用数学专业
同学来找我,说晚上要交期中作业,让我帮他处理点数据,数据是保存在excel文件
,本着助人为乐的精神,帮他写了个py脚本,随便学到了如何用xlwt
(实现写操作)和xlrd
(实现读操作)两个第三方库处理excel文件。
第三方库
其实,不止有xlwt和xlrd这两个库能够处理excel数据,只不过是我用过xlwt这个库,比较熟悉,所以就接着用了。
各个库对比:
xls文件和xlsx文件
从图可以看出,我用到的库只能处理xls文件,而不能处理xlsx文件,这两种文件格式有何差别?
文件核心结构不同:
xls核心结构是复合文档类型的;
xlsx 的核心结构是 XML 类型的结构,并且基于XML进行压缩(占用空间更小),所以也可以看做zip文件,将一个“.xlsx”文件的后缀改为ZIP后,用解压软件解压,可以看到里面有一个xml文件和文件的主要内容。
最大行列得数量不同:
xls最大只有65536行、256列
xlsx可以有1048576行、16384列
根据网上的解释,xlsx文件能够保存的数据量更大,并且占用空间更小,毕竟是后来推出的文件格式。
要使用我们的xlwt和xlrd库,就得先将xlsx文件转换为xls文件,大家可以在wps
或office
的另存为
中进行转换。
注意:xls文件最多支持256列,转换的时候要留心自己的xlsx文件列数是否超出。
安装库
pip install xlwt
pip install xlrd
xlwt库
该库能够实现excel文件的写操作。
workbook=xlwt.Workbook(encoding="utf-8")#创建workbook对象
worksheet=workbook.add_sheet("sheet1")#创建工作表
worksheet.write(0,2,"hi")#在第0行第2列写入"hi"字符串
workbook.save("myData.xls")#保存数据
xlrd库
该库能够实现excel文件的读操作。
workbook = xlrd.open_workbook("myData.xls")#打开文件
sheet_name = workbokk.sheet_names()#获取所有sheet名称
sheet = workbook.sheet_by_index(0)#根据索引获取sheet
#sheet = workbook.sheet_by_name('shee1')#根据名字获取sheet
# sheet1的名称,行数,列数
print(sheet1.name, sheet1.nrows, sheet1.ncols)
# 获取整行和整列的值(数组)
rows = sheet1.row_values(2) # 获取第三行内容
cols = sheet1.col_values(0) # 获取第1列内容