将Excel列中的数据读入Python lis

2024-04-28 12:58:34 发布

您现在位置: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。最后一行是空的。编译时不知道此列中有多少行数据。

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

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


Tags: 数据代码pyimporta2列表as数字
3条回答

我知道这是个老问题,但你也可以使用^{}

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))]

注:

  • Pandas是一个很棒的库,但是安装它只是为了将excel列读入列表是一个过分的IMHO。

  • xlrd不再被维护。从xlrd github page

    PLEASE NOTE: This library currently has no active maintainers. You are advised to use OpenPyXL instead.

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

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

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

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

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

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

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

我经常说从csv或excel读取文件,但我会使用^{}

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中使用类似soemthing的偏移量而不是'A2:A40'的动态公式,或者使用命名范围?

相关问题 更多 >