采用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 xlrd


def read_xlsx(filename: str):
    workbook = openpyxl.load_workbook(filename)
    worksheet = workbook.worksheets[0]

    i = 0
    for row in worksheet.iter_rows(values_only=True):
        i += 1
        if i > 1:
            # 如果是真实业务程序代码, 这里常常会创建一个业务对象进行赋值
            print(row)


def read_xls(filename: str):
    wb = xlrd.open_workbook(filename=filename)
    table = wb.sheets()[0]
    row_count = table.nrows
    col_count = table.ncols

    for 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)
        return

    if 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数据了。

 

你可能感兴趣的:(Python,excel,python)