Python:遍历 excel 列并使用 win32com 获取值

Python: Iterating through excel column and getting values with win32com

我正在使用 Python 3.5 和 win32com 遍历 excel 文档行(仅从第一列开始)并从中获取所有值,最好是在一个简单的列表。我尝试了以下实现,但存在一些问题:

excel_app = win32com.client.Dispatch('Excel.Application')
workbook = excel_app.Workbooks.Open(myfile2)
worksheet = workbook.Sheets('Sheet1')
data = excel_app.Range("A1:A60")
print(data)

for i in data:
    if i is not None:
        print(i)

问题主要在于:"data = excel_app.Range("A1:A60")"

  1. 这需要前 60 行,我只想获取与 excel 文件中的数据一样多的行,否则我没有获得足够的数据,或者我得到太多了,最后我得到了一堆 'None'

  2. 它 returns 是一个元组,所以如果我得到的数据多于电子表格的数据,我无法修改它以删除 'None' 值。

如果您不介意使用 xlrd,我认为它会容易得多。 这会像

import xlrd

xlf = xlrd.open_workbook('/wherever/file/may/roam/asdf.xlsx')
xls = xlf.sheet_by_name('Sheet1')
data = xls.col_values(0)

您可以使用以下方法获取行数:

worksheet.UsedRange.Rows.Count

其中 UsedRange 表示任何时候包含值的所有单元格。

一旦元组中有了数据,就可以将其复制到列表中进行处理 - 例如new_list = 数据[:].

如果要复制到新列表并同时删除 None 个值:

new_list = [ item for item in data if item is not None]