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

我正在使用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 。 最后一行是空的。 在编译时不知道该列中有多less行数据。

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

我打开使用其他python库来读取xlwings以外的Excel数据。 我正在使用python v3.6

我对从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() 

一个替代scheme是使用Excel中的OFFSET而不是'A2:A40' ,或者可能是一个命名范围的dynamic公式。

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

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

可以使用下面的xlwings在这一行中find行数。

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

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

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

一旦find行数,很容易找出其余的。