python快速读取excel

python处理excel数据也是经常需要用到的。

这里使用的包是openpyxl

import openpyxl
excel_name = 't1.xlsx'

wb = openpyxl.load_workbook(excel_name)
ws = wb.active

print(ws.cell(row=1, column=1).value)

# or
print(ws.cell(1, 1).value)

这里就会打印第一行第一列的那个值,即A1处的值。

openpyxl的好处是,它会用excel的结构来对待表格数据。如上面代码所示,ws就是从excel里获取到的结构化数据。这个结构化数据既不是list,也不是dict,而是拥有excel结构的数据。可以通过ws.cell(row, column)来访问表格中的每一个格子。

上面的代码还可以这样变换:

import openpyxl
excel_name = 't1.xlsx'

wb = openpyxl.load_workbook(excel_name)
ws = wb.active

print(ws['A1'].value)

这里的A1就是第一行第一列的那个值,你搞清楚excel表格的行列就应该知道A1是什么,同理还有A2,B2...等等。

如果想遍历这个excel该怎么办呢?

没错,还是得for循环,

import openpyxl

excel_name = 't1.xlsx'

wb = openpyxl.load_workbook(excel_name)
ws = wb.active

# print a column
for r in range(ws.max_row):
    print(ws.cell(r+1, 1).value)

这里有个小细节,因为excel中行和列的取值都不能为0,即都是从1开始,所以需要r+1

如果咱需要把excel中的某列或者某行转换成python最方便处理的list,怎么做呢?

那就自己写个函数呗:

import openpyxl

excel_name = 't1.xlsx'

wb = openpyxl.load_workbook(excel_name)
ws = wb.active


def read_excel_by_rc(ws, r=-1, c=-1):
    ls = []
    if r == -1 and c == -1:
        return
    if r > 0 and c == -1:
        for c in range(ws.max_column):
            ls.append(ws.cell(r, c+1).value)
    elif r == -1 and c > 0:
        for r in range(ws.max_row):
            ls.append(ws.cell(r+1, c).value)
    else:
        print('please input right (r, c) pair!')
    return ls

print(read_excel_by_rc(ws, r=1))
print(read_excel_by_rc(ws, c=3))

以上。

发布了150 篇原创文章 · 获赞 1926 · 访问量 93万+

猜你喜欢

转载自blog.csdn.net/leviopku/article/details/104559015