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:A46或A2: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'或者命名范围?
我知道这是一个老问题,但你也可以使用 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。