1. 程式人生 > >8、利用xlrd讀取excel資料

8、利用xlrd讀取excel資料

在同一個sheet表中可以有多個表,表與表之間用空格來隔離,遇到空格,則認為這個表結束了。


程式碼如下:

import xlrd
file_path = "C:/Users/Administrator/Desktop/python/excel/1.xlsx"
sheet_name = '表2'
table = '學生表'
def read_excel_by_name(file=file_path,sheet_name=sheet_name,table_name=table):
    wb = xlrd.open_workbook(file)
    sheet = wb.sheet_by_name(sheet_name)
    col_val = sheet.col_values(0)
    nrows = sheet.nrows
    row_end = nrows-1
    for row in range(nrows):
        if col_val[row] == table_name:
            table_row = row
            row_start = table_row + 1
            break
    for row in range(row_start,nrows):
        if col_val[row] == '':
            row_end = row - 1
            break
    col_names = list(sheet.row_values(row_start))
    while '' in col_names:
        col_names.remove('')
    lis = []
    for row in range(row_start + 1,row_end + 1):
        row_values = sheet.row_values(row)
        if row_values:
            app = {}
            for i in range(len(col_names)):
                app[col_names[i]] = row_values[i]
            lis.append(app)

    return lis


s = read_excel_by_name(file=file_path,sheet_name=sheet_name,table_name=table)

print(s)


讀取配置檔案:


程式碼如下:

#coding=utf-8
import xlrd
import sys,os
def read_inparam(classname):
    wb = xlrd.open_workbook('D:\\workspace\\Myproject\\testconfig.xlsx')
    sheet = wb.sheet_by_name("Sheet2")
    rows = sheet.nrows
    list = []
    for i in range(0,rows):
        cols = sheet.col_values(0)
        if cols[i] == "":
            break
        if cols[i] == classname:
            inputfile = sheet.row_values(i)[2]
            presetfile = sheet.row_values(i)[3]
            list.append(inputfile)
            list.append(presetfile)
            return list
    return list


def  test():
    classname = __file__  #獲取當前檔名字Scene_02
    classname = classname.split("/")[-1].split(".")[0]
    list = read_inparam(classname)
    print(list)


if __name__ == '__main__':
    test()