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))
以上。