python使用xlrd讀取excel數據


一、安裝xlrd

 庫的安裝我這里就不說了..

二、讀取 excel

前提條件:excel文件名稱為 excel_data.xlsx

 

 

 

 

 

 

1、打開excelw 文件

workbook = xlrd.open_workbook(filename) # filename 為excel文件路徑 + 文件名稱

2、獲取 excel 的sheet工作表的內容

(1)比如:獲取第一個sheet工作表的名稱,如圖

 

 

 貼上代碼:

get_sheet_name = workbook.sheet_names()[0]  # [0]表示索引,獲取第一個sheet工作表名稱

(2)比如:獲取 excel 所有的sheet工作表的名稱

sheetname = workbook.sheet_names()

(3)根據工作表的名稱獲取sheet工作表頁的對象

workbook = xlrd.open_workbook(FileName)
get_sheet_name = workbook.sheet_names()[0]
sheet2 = workbook.sheet_by_name(get_sheet_name)
print(sheet2)

輸出:

<xlrd.sheet.Sheet object at 0x00000181B7CFCA90>

(4)根據工作表的索引獲取sheet工作表頁的對象

workbook = xlrd.open_workbook(FileName)
sheet1 = workbook.sheet_by_index(0)
print(sheet1)       

輸出:

<xlrd.sheet.Sheet object at 0x000001C661A8C9B0>

(5)獲取sheet工作表的行數和列數

workbook = xlrd.open_workbook(FileName)  # 打開文件
sheet1 = workbook.sheet_by_index(1)    # 根據索引獲取第一個工作表的內容(通過更改索引數字1,可以獲取第幾個工作表的內容)
nrows = sheet1.nrows              # 獲取sheet工作表的行數
ncols
= sheet1.ncols              # 獲取sheet工作表的列數 print(nrows) print(ncols)

輸出:

11和7;說明有11行和7列

 (6)獲取第1行(索引為0)的內容(是一個列表)

workbook = xlrd.open_workbook(FileName)
sheet1 = workbook.sheet_by_index(1)
row_data = sheet1.row_values(0)
print(row_data)

(7)獲取第1列(索引為0)的值(是一個列表)

workbook = xlrd.open_workbook(FileName)
sheet1 = workbook.sheet_by_index(1)
col_data = sheet1.col_values(0)
print(col_data)

(8)使用行列索引(從0開始)獲取單元格的數據

workbook = xlrd.open_workbook(FileName)
sheet1 = workbook.sheet_by_index(1)
cell_A1 = sheet1.cell(0, 0)
print(cell_A1)

(9)將Excel文件中的數據轉換成json數組

import xlrd
import json


def readexcel(FileName):
    workbook = xlrd.open_workbook(FileName)
    sheet1 = workbook.sheet_by_index(1)
    nrows = sheet1.nrows

    idx = sheet1.row_values(0)
    # 最終的數據列表
    data = []
    # 從第1行開始遍歷循環所有行,獲取每行的數據
    for i in range(1,nrows):
        row_data = sheet1.row_values(i)
        # 組建每一行數據的字典
        row_data_dict = {}
        # 遍歷行數據的每一項,賦值進行數據字典
        for j in range(len(row_data)):
            item = row_data[j]
            row_data_dict[idx[j]] = item
            # 將年份字段轉成整形
            #row_data_dict['year'] = int(row_data_dict['year'])
        # 將行數據字典加入到data列表中
        data.append(row_data_dict)
        result = json.dumps(data,indent = 4,ensure_ascii=False)
        print(result)


if __name__ == '__main__':

    readexcel(r'D:/CodeBase/ReadData/ReadExcel/excel_data.xlsx')

輸出:

[
    {
        "車牌號": "粵A123456",
        "設備號": 13645454412.0,
        "sim卡號": 13645454412.0,
        "設備類型": "A5C-8W",
        "所屬車組": "測試",
        "車架號": 123.0,
        "服務密碼": 123.0
    }
]

 

注意:

json.dumps 進行序列化時,默認使用ascii編碼, print json.dumps(data,indent = 4)輸出unicode編碼的結果,比如: {"\u8f66\u724c\u53f7": "\u7ca4A123456"}

json.dumps(data,indent = 4,ensure_ascii=False),不使用ascii編碼,輸出結果為:{"車牌號": "粵A123456"}

但是有時也碰到 json.dumps(data,indent = 4,ensure_ascii=False)之后依舊是亂碼的格式,可采取下面方式處理:

import json 

dic = {"車牌號": "粵A123456"}print json.dumps(dic,ensure_ascii=False).decode("utf-8").encode("gb2312") #{"車牌號": "粵A123456"}

 

 

https://blog.csdn.net/dnxbjyj/article/details/71774176


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM