我们经常与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() # 打开一个空白excelsheet = wb.add_sheet("sample") # 新增一个sheet名叫samplefor 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 openpyxldef 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).valuecell_C4 = table.cell(2, 3).value# print(cell_A1,cell_C4)# 使用行和列进行索引查找cell_A1 = table.row(0)[0].valuecell_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到控制台的截图。