讀取excel的包的分析
pandas,numpy,雖然功能強大,但需要重新定義excel,效率低。
xlutils,xlrd(read only),xlwt(write only,需要創建新工作表)
xutils可實現讀寫切換,對讀取包重新編碼,但影響原三方包(xlrd)函數調用,xlwt讀寫功能有限。最終採用改後邏輯。
openpyxl:直接讀寫excel文檔,可直接修改數據,可能會影響原數據。
調包
import xlrd
打開文件
data = xlrd.open_workbook('文件名.xlsx')
查看頁名
print(data.sheet_names())
輸出sheet1、sheet2等頁名,一般用不上,因爲可以用下表取頁
獲取某頁
sheet = data.sheet_by_name('sheet1')
sheet = data.sheet_by_index(0)
兩個方法都行,一般用第二個,因爲第一個還得事先知道頁名,第二個直接指定下標就行了
獲取行數和列數
print(table.nrows)
print(table.ncols)
獲取內容
獲取整行的值和整列的值,返回的結果爲數組
整行值:table.row_values(start,end)
整列值:table.col_values(start,end)
參數 start 爲從第幾個開始打印,end爲打印到哪個位置結束,默認爲none
print(table.row_values(0))
print(table.col_values(1))
獲取某個單元格的值,例如獲取B3單元格值
print(table.cell(3,2).value)
舉例
把excel文件內容讀到列表list裏面
import xlrd
table = xlrd.open_workbook("文件名.xlsx")
sheet = table.sheet_by_index(0)
content = []
# 第一讀一個,方便特殊表格的操作
for i in range(sheet.nrows):
tmp = []
for j in range(sheet.ncols):
tmp.append(sheet.cell_value(i,j))
content.append(tmp)
for i in range(sheet.nrows):
print(content[i])
# 或者一次讀一行
for i in range(sheet.nrows):
content.append(sheet.row_values(i))
for i in range(sheet.nrows):
print(content[i])