我想在python中使用和不使用def语句(函数)从excel表中提取数据

时间:2017-10-17 05:54:17

标签: python excel selenium

我最近开始学习PYTHON,但我遇到了一些困难。

我正在尝试使用和不使用def语句从excel表中提取数据。因此,如果没有def,我将获得有效的输出,但是当我使用def语句提取数据时,我得到了#34; NONE"作为输出。请帮我解决这个问题。

book=xlrd.open_workbook("E:\\Email.xlsx")

print(book.nsheets)

SheetName =book.sheet_by_name("gmail")

rows=SheetName.nrows

cols=SheetName.ncols

print(rows)

print(cols)

#####没有定义任何功能####

table=list()

record=list()

for x in range(rows):

    for y in range(cols):

        record.append(SheetName.cell(x,y).value) 

        table.append(record)

        record=[]

        rows=rows+1

print(table)
  

O / P:[['电子邮件ID:'],[' AVVC.com'],['密码'],[' ; ABCDEFG']]

WITH DEF
def getcell(rows,cols):

table=list()

record=list()


for x in range(rows):

    for y in range(cols):

        record.append(SheetName.cell(x,y).value) 

        table.append(record)

        record=[]

        rows=rows+1

        return;

v= getcell(0,1)

print(v)

O / P:NONE

1 个答案:

答案 0 :(得分:0)

当你在return中呼叫function时,它会停止执行并将其后的任何内容传回。

当你的return之后没有任何内容时,它正在返回None(没有)。您要做的是返回table list,使其工作方式与function时的工作方式相同。此外,当return停止执行时,它需要位于function的最后 - for-loops之后才能完成。

制作function

def getcell(rows,cols):
    table=list()
    record=list()
    for x in range(rows):
       for y in range(cols):
            record.append(SheetName.cell(x,y).value) 
            table.append(record)
            record=[]
            rows=rows+1

    return table