本文主要是介绍采用xlrd和openpyxl库读取excel文件,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
最近给客户线上平台做一个数据同步功能,客户从其它业务系统每日导出excel表,可能是xlsx,也可能是xls,字段格式是固定的,其中一个环节就是要先读取这些excel表数据,其它环节自然比excel读取复杂,但是都是业务逻辑,这里不描述,单记录一下excel读取问题。
调研之后发现,当前的高版本库,xlrd只支持xls格式文件,而openpyxl则支持xlsx文件,于是做了一个兼容,程序支持两种格式的excel文件读取。代码如下:
#!/usr/bin/env python3
# -*- coding: utf-8 -*-
import os.path
import sys
import openpyxl
import xlrddef read_xlsx(filename: str):workbook = openpyxl.load_workbook(filename)worksheet = workbook.worksheets[0]i = 0for row in worksheet.iter_rows(values_only=True):i += 1if i > 1:# 如果是真实业务程序代码, 这里常常会创建一个业务对象进行赋值print(row)def read_xls(filename: str):wb = xlrd.open_workbook(filename=filename)table = wb.sheets()[0]row_count = table.nrowscol_count = table.ncolsfor i in range(row_count):if i == 0:continue# 如果是真实业务程序代码, 这里常常会创建一个业务对象进行赋值for j in range(col_count):print(table.cell_value(i, j))def read_excel(filename: str):if not os.path.isfile(filename):print('%s is not existed!' % filename)returnif filename.endswith('.xlsx'):read_xlsx(filename)elif filename.endswith('.xls'):read_xls(filename)else:print('invalid file type of excel: ', filename)def usage():print('usage: ./excel_reader.py [excel文件路径]')def main():if len(sys.argv) < 2:usage()else:read_excel(sys.argv[1])if __name__ == '__main__':main()
运行: python3 ./excel_reader.py ./test.xlsx, 程序会报错,需要xlrd库和openpyxl库,于是我们需要安装这两个库:
pip install xlrd
pip install openpyxl
pip list
之后再运行应该就可以正常读取excel数据了。
这篇关于采用xlrd和openpyxl库读取excel文件的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!