我们经常与EXCEL打交道,其实我们可以使用python的相应模块去处理EXCEL文件。2003以前的表格以.xls后缀,用xlwt来写表格,用xlrd来读取表格;搭配xlutils修改表格。2007的表格以.xlsx后缀,用openpyxl来读写表格。
以下是具体代码,已有相应注释,接上篇文章“字典dict类型转换为列表list类型”:
def dict_to_list2():
class_list = [] #1.创建一个空的二维列表
for item in class_dict.items(): #2.获取字典类型数据的字典项(dict-->tuple)
a = item[1] #3.获取元组的数据集合(tuple-->str,list)
print("item[1]的数据类型:", type(a), a) #4.查看元组的数据的类型
for list in a: #5.分别获取元组的数据(str-->str,list-->dict)
rows=[]
for info in list:
if info == 'courseName'or info == 'audioname' or info == 'pdfFileId' or info == 'learnStatus':
rows.append(list[info]) #6.获取字典类型数据的value存入到一维列表(dict-->str-->list)
if rows: # 如果列表不为空
class_list.append(rows) # 二维列表存入数据
return(class_list)
def writeExcel(file_path,class_list):
wb = xlwt.Workbook() # 打开一个空白excel
sheet = wb.add_sheet("sample") # 新增一个sheet名叫sample
for i in range(len(class_list)):
print(class_list[i][0])
print(class_list[i][1])
print(class_list[i][2])
print(class_list[i][3])
sheet.write(i,0,class_list[i][0]) # 第i行第一列
sheet.write(i,1, class_list[i][1]) # 第i行第二列
sheet.write(i,2, class_list[i][2]) # 第i行第二列
sheet.write(i,3, class_list[i][3]) # 第i行第二列
wb.save(file_path)
print("写入表格成功!!!")
if __name__ == '__main__':
class_list2 = dict_to_list2()
writeExcel("F:\SoftwareTest\sample.xls", class_list2)
以上是写入到excel的情况,下面主要介绍一下如何读取excel的信息。
'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
#作者:cacho_37967865
#博客:https://blog.csdn.net/sinat_37967865
#文件:handelExcel.py
#日期:2018-10-21
#备注:pip install xlwt, pip install xlrd, pip install xlutils,pip install openpyxl
#模块分类:2003以前的表格以.xls后缀,用xlwt来写表格,用xlrd来读取表格;搭配xlutils修改表格
2007的表格以.xlsx后缀,用openpyxl来读写表格。
'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
import os
# 读写.xls结尾的03-07版本EXCEL
import xlrd
import xlwt
from xlutils.copy import copy
# 读写.xlsx结尾的07版本EXCEL
import openpyxl
def readExcel(folder):
# 获取指定目录下面的所有文件
files = os.listdir(folder)
# 获取xls类型的文件放到一个列表里面
xlsFiles = [f for f in files if f.endswith(".xls")]
for xlsFile in xlsFiles:
print(xlsFile) # 打印目标路径下所有文件
os.chdir(folder) # 切换到操作目录
print("目录地址为:" + os.getcwd()) # 打印当前目录
data = xlrd.open_workbook(xlsFile) # 打开excle文档读取数据
table = data.sheets()[0] # 通过索引顺序获取
table2 = data.sheet_by_index(0) # 通过索引顺序获取
table3 = data.sheet_by_name('sample') # 通过名称获取
nrows = table.nrows # 获取行数
ncols = table.ncols # 获取列数
print(xlsFile,"文件行数:",nrows)
print(xlsFile,"文件列数:",ncols)
# 获取具体单元格数据获取
cell_A1 = table.cell(0, 0).value
cell_C4 = table.cell(2, 3).value
# print(cell_A1,cell_C4)
# 使用行和列进行索引查找
cell_A1 = table.row(0)[0].value
cell_A2 = table.col(1)[0].value
# print(cell_A1, cell_A2)
# 数据类型判断
ctype1 = table.cell(1, 1).ctype # 第一行第1列数据类型
ctype2 = table.cell(1, 2).ctype # 第一行第2列数据类型
print('数据类型:0-empty,1-string, 2-number, 3-date, 4-boolean, 5-error',ctype1,ctype2)
for i in range(nrows):
className = table.cell_value(i, 0)
filename = table.cell_value(i, 1)
print(className,filename)
if __name__ == '__main__':
readExcel("F:\SoftwareTest")
以上是读取到EXCEL到控制台的截图。