首页 文章

将Excel列中的数据读入Python列表

提问于
浏览
5

我使用python xlwings在Excel 2013中读取一列数据 . 列 A 填充了数字 . 要将此列导入python列表 py_list ,我有以下代码;

import xlwings as xw

wb = xw.Book('BookName.xlsm')
sht = xw.Book('SheetName')
py_list = sht.range('A2:A40').value

如果列数据填充在 A2:A40 ,则上述代码有效 . 但是,列数据可以继续增长 . 数据可以增长并延伸到 A2:A46A2:A80 . 最后一行是空的 . 在编译时不知道此列中有多少行数据 .

如何修改代码以检测最后一行的空单元格,以便 py_list 可以读取数据范围?

我愿意使用其他python库来读取除xlwings之外的Excel数据 . 我使用的是python v3.6

2 回答

  • 2

    我说这很多关于从csv或excel读取文件,但我会使用pandas .

    import pandas as pd
    
    df = pd.read_excel('filename.xlsm', sheetname=0) # can also index sheet by name or fetch all sheets
    mylist = df['column name'].tolist()
    

    另一种方法是使用动态公式,在excel中使用类似OFFSET的东西而不是 'A2:A40' ,或者可能是命名范围?

  • 6

    经过多次反复试验,我将回答我自己的问题 .

    这个问题的关键是找出列 A 中的行数 .

    使用下面的xlwings可以在这一行中找到行数;

    rownum = sht.range('A1').end('down').last_cell.row
    

    需要仔细阅读API文档才能得到答案 .

    http://docs.xlwings.org/en/stable/api.html#xlwings.Range

    一旦找到行数,就可以很容易地找出其余的行 .

相关问题