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

use*_*207 7 python excel xlwings

我使用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
Run Code Online (Sandbox Code Playgroud)

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

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

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

Sta*_*ael 10

我说这很多关于从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()
Run Code Online (Sandbox Code Playgroud)

另一种方法是使用动态公式,在excel中使用像OFFSET这样的东西代替'A2:A40'或者命名范围?

  • 在我看来,该功能的详细信息在这里:https://pandas.pydata.org/pandas-docs/stable/ generated/pandas.read_excel.html (2认同)

Bit*_*han 9

我知道这是一个老问题,但你也可以使用 openpyxl

from openpyxl import load_workbook
wb = load_workbook("BookName.xlsx")  # Work Book
ws = wb.get_sheet_by_name('SheetName')  # Work Sheet
column = ws['A']  # Column
column_list = [column[x].value for x in range(len(column))]
Run Code Online (Sandbox Code Playgroud)

笔记:

  • Pandas是一个很棒的库,但是安装它只是为了将 excel 列读入列表是一种矫枉过正的恕我直言。

  • xlrd不再维护。来自xlrd github 页面

    请注意:这个库目前没有活跃的维护者。建议您改用 OpenPyXL。

  • get_sheet_by_name 有弃用警告。使用 ws = wb[wb.sheetnames[x]],其中 x 是表示所需工作表名称的列表元素。您必须使用 wb[wb.sheetnames[x]],因为这会返回一个对象(工作表),然后您可以使用 column = ws['A'] 对其进行迭代,您不能使用 ws = wb.sheetnames[0],其中返回一个 str 对象 (2认同)