我使用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文件中的数据一样多的行,否则要么我没有获得足够的数据,要么我得到太多而且我最终得到一堆“无”'
它会返回一个元组,因此我无法对其进行修改以删除“无”'如果我获得的数据超出电子表格的数据,则会显示值。
答案 0 :(得分:2)
您可以使用以下方式获取行计数:
worksheet.UsedRange.Rows.Count
其中UsedRange表示任何时候都包含值的所有单元格。
在元组中包含数据后,您可以将其复制到列表中进行处理 - 例如new_list = data [:]。
如果要复制到新列表并同时删除无值:
new_list = [ item for item in data if item is not None]
答案 1 :(得分:1)
如果您不介意使用xlrd,我认为会更容易。 这会像......
import xlrd
xlf = xlrd.open_workbook('/wherever/file/may/roam/asdf.xlsx')
xls = xlf.sheet_by_name('Sheet1')
data = xls.col_values(0)