Python读取Excel每一行为列表—大PK(openpyxl\pandas\xlwings\xlrd)看谁用时少?

背景

我们在平常办公的时候,尤其是财务人员等一些经常与Excel文件打交道的小伙伴们,我们会对Excel文件进行【增】,【删】,【查】,【改】那么我们今天分享一下对于Excel文件进行读取的几种方法,首相我们需要安装一下所用到的第三方库!,今天我们统一利用一个文件20万行✖20列的数据源进行读取时间测试!

库1 安装
openpyxl pip install openpyxl
pandas pip install pandas
xlwings pip install xlwings
xlrd pip install xlrd

在这里插入图片描述

使用—openpyxl(耗时89秒+输出

import time
import openpyxl

t1 = time.time()
wb = openpyxl.load_workbook('数据源.xlsx')
ws = wb.active
# sheet_names = wb.sheetnames 获取所有的shee名

for row in ws.iter_rows(values_only=True):
    print(row)

t2 = time.time()
print("读取 耗时%.2f秒"%(t2-t1))
    

在这里插入图片描述

关于openpyxl更对的知识点,如:单元格修改、单元格加底、设置单元格列宽、设置单元格行高等,我都写在了这篇文章里欢迎大家订阅查看openpyxl读取Excel表格(读取、单元格修改、单元格加底色)



使用—pandas(耗时44秒+输出

import pandas as pd

import time


def read_pd():
    df = pd.read_excel("数据源.xlsx", dtype=str, keep_default_na='')
    # 将每一行数据转换为列表并存储
    rows_data = df.values.tolist()
    for r in rows_data:
        print(r)


if __name__ == '__main__':
    t1 = time.time()
    read_pd()
    t2 = time.time()
    print("程序运行结束,耗时%.2f" % (t2 - t1))

在这里插入图片描述

更多pandas相关内容可以订阅专栏,查看更多相关知识点,专栏地址:点我直达

在这里插入图片描述



使用—xlwings(耗时15秒+输出

import time
import xlwings as xw
t1 = time.time()

app = xw.App(visible=False, add_book=False)
app.display_alerts = False    # 关闭一些提示信息,可以加快运行速度。 默认为 True。
app.screen_updating = False    # 更新显示工作表的内容。默认为 True。关闭它也可以提升运行速度。
wb = app.books.open("数据源.xlsx")
# sheet = wb.sheets["填写sheet名字"]
# 或者 sheet = wb.sheets["索引值从0开始"]
sheet = wb.sheets[0]
data = sheet.range('A1').expand().value
for r in data:
    print(r)

t2 = time.time()
print("读取 耗时%.2f秒"%(t2-t1))


在这里插入图片描述

关于xlwings更对的知识点,如:按行读取,按列读取,我都写在了这篇文章里欢迎大家订阅查看xlwings读取excel文件



使用—xlrd(耗时47秒+输出

import xlrd


def get_excel():
    with xlrd.open_workbook("JALA账单/清远-配送-6月.xlsx") as workbook:
        name_sheets = workbook.sheet_names()  # 获取Excel的sheet表列表,存储是sheet表名
        for index in name_sheets:  # for 循环读取每一个sheet表的内容
            sheet_info = workbook.sheet_by_name(index)  # 根据表名获取表中的所有内容,sheet_info也是列表,列表中的值是每个单元格里值
            rows = []
            for row_index in range(sheet_info.nrows):
                row = sheet_info.row_values(row_index)
                print(row)
                # rows.append(row)
            # 处理当前 sheet 中的数据,例如打印每一行数据
            # print(rows)


if __name__ == '__main__':
    t1 = time.time()
    apply_list = get_excel()
    t2 = time.time()
    print("程序运行结束,耗时%.2f"%(t2-t1))

在这里插入图片描述

总结

耗时
openpyxl 耗时89秒+输出
pandas 耗时44秒+输出
xlwings 耗时15秒+输出
xlrd 耗时47秒+输出

希望对大家有帮助

致力于办公自动化的小小程序员一枚

都看到这了,关注+点赞+收藏=不迷路!!

猜你喜欢

转载自blog.csdn.net/weixin_42636075/article/details/133269740