介绍
介绍
福哥今天要带着大家学习使用Python读取Excel文档的方法,Python读取Excel文档推荐使用openpyxl库,这个库接口友好、效率高,可以让我们简简单单地将Excel里面的数据读取出来使用。
安装
安装openpyxl库。
使用的是openpyxl库,直接通过pip安装即可。
pip install openpyxl
读文档
这里有一个测试用的excel文档,我们等下会用openpyxl读取它的数据。
默认格式
我们使用最简单的方式读取这个报表的内容,遍历过程没有进行特别的加工,很直观~~
福哥整理了步骤:load_workbook > worksheets > worksheet > rows > row > cell > cell.coordinate, cell.value,大家可以记住这个层级关系!
import openpyxl workbook = openpyxl.load_workbook("openpyxl.xlsx") allSheetDatas = None if workbook is not None and workbook.worksheets is not None: # cycle sheets allSheetDatas = [] for d in range(0, len(workbook.worksheets)): mySheet = workbook.worksheets[d] # cycle rows sheetDatas = [] for row in mySheet.iter_rows(): # cycle cell sheetRow = {} for cell in row: sheetRow[cell.coordinate] = cell.value # save row sheetDatas.append(sheetRow) # save sheet allSheetDatas.append(sheetDatas) # dump if allSheetDatas is not None: for d in range(0, len(allSheetDatas)): for e in range(0, len(allSheetDatas[d])): print(d, e, allSheetDatas[d][e])
数据表格式
大家可以看到这个导出的格式和Excel上面看到的是颠倒的,列头在最左边,数据在右边,很不方便查看。
福哥整理了一个排列的代码,可以将这个颠倒的格式“正”过来!
import openpyxl import re workbook = openpyxl.load_workbook("openpyxl.xlsx") allSheetDatas = None if workbook is not None and workbook.worksheets is not None: # cycle sheets allSheetDatas = [] for d in range(0, len(workbook.worksheets)): mySheet = workbook.worksheets[d] # cycle rows dataTableField = [] dataFieldRow = None sheetDatas = [] for row in mySheet.iter_rows(): # cycle cell sheetRow = {} if dataFieldRow is None: dataFieldRow = {} for cell in row: colChar = re.sub(r"\d+", "", cell.coordinate) dataFieldRow[colChar] = cell.value continue else: dataRow = {} for cell in row: colChar = re.sub(r"\d+", "", cell.coordinate) sheetRow[dataFieldRow[colChar]] = cell.value # save row sheetDatas.append(sheetRow) # save sheet allSheetDatas.append(sheetDatas) # dump if allSheetDatas is not None: for d in range(0, len(allSheetDatas)): for e in range(0, len(allSheetDatas[d])): print(d, e, allSheetDatas[d][e])
总结
今天福哥带着童鞋们学习了Python的openpyxl库的使用方法,通过openpyxl库可以快速地将Excel当中的数据读取出来,形成一个二维的dict结构,便于我们进行加工处理。
下一课,我们会学习使用openpyxl库创建、编写Excel文档的技巧,敬请期待~~