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")"
这需要前 60 行,我只想获取与 excel 文件中的数据一样多的行,否则我没有获得足够的数据,或者我得到太多了,最后我得到了一堆 'None'
它 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]
我正在使用 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")"
这需要前 60 行,我只想获取与 excel 文件中的数据一样多的行,否则我没有获得足够的数据,或者我得到太多了,最后我得到了一堆 'None'
它 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]