python快速讀取excel

2021-10-03 07:54:16 字數 2217 閱讀 9398

python處理excel資料也是經常需要用到的。本文介紹2種python讀取excel的方法:openpyxlpandas。事實上,pandas讀取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):

elif r == -1 and c > 0:

for r in range(ws.max_row):

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

pandas直接可以把excel**當numpy矩陣處理,更加方便。

import pandas

excel_name = 't1.xlsx'

pd_excel = pandas.read_excel(excel_name)

# 如果有多個sheet, 可以指定sheet name

# pd_excel = pandas.read_excel(excel_name, sheet_name='student')

table1 = pd_excel.values

print(table1)

print(type(table1))

# table1完全可以被當作乙個二維list來索引,方便又好用

table1完全可以被當作乙個二維list來索引,方便又好用。

快速讀取SharedPreferences資料

在開發時時常要用到sharedpreferences存入和讀取一些資料,如果activity很多的話,每次都定義一次sharedpreferences非常麻煩。其實可以很簡單地將sharedpreferences的讀寫抽出來形成乙個工具類,方便呼叫 public class sharedprefer...

Xml快速讀取方式

讀寫xml的選擇順序比較 xmldocument xdocument會將xml全部載入到記憶體,造成記憶體浪費,不適合大資料xml處理。xmlreader 以及子類xmltextreader 則適合快速的讀取,它是唯讀的,並且只向前讀取。其讀取的效能比xml linq快 xml linq 則是.ne...

C 下快速讀取檔案

最近在寫分類演算法,需要和 svm效果做對比。發現svm讀檔案的速度慢的不能忍,所以想 一下windows下的最快的檔案讀取速度。輸入說明 1.輸入資料可能有幾千個1m左右的小檔案 2.也可能為100m左右的單個檔案 3.最終資料有數w行,每一行格式如下 1 201 1 3148 1 3983 1 ...