[英]Read only Excel Cells with values python win32com
我有一个如下的Excel文档
num value1 value2
1 A 100
2 B
3 c 300
我想遍历value2
以获得超过200的值,如果发现超过200的值,则打印value1
。 我遇到的一个大问题是告诉它在到达带有文本的单元格末尾时停止for循环。
我的循环最好是这样的:
while columnA is not empty:
if value2 > 200:
print (value1)
一些注意事项:我正在使用win32com。 在我的数据集中, ColumnA
永远不会为空。 预先感谢您提供的任何帮助!
编辑:每个文档的行数不会总是相同。 我需要它自动停止。 抱歉,不清楚
考虑使用Excel的对象库,特别是其Range Object或Worksheet.Cells属性 。 同样,通常在Excel VBA中,您搜索工作表以找到最后一行,然后循环直到找到为止:
Excel工作表
Python COM代码 (使用try / except / finally始终释放资源,无论是否出错)
import win32com.client as win32
try:
f = "myWorkbook.xlsx"
xl = win32.gencache.EnsureDispatch('Excel.Application')
wb = xl.Workbooks.Open(f)
ws = wb.Worksheets(1)
xlUp = -4162
lastrow = ws.Cells(ws.Rows.Count, "A").End(xlUp).Row + 1
for i in range(2,lastrow):
# LOOP RANGE OBJ
if ws.Range("C" + str(i)).Value is not None and ws.Range("C" + str(i)).Value > 200:
print(ws.Range("B" + str(i)).Value)
# LOOP CELLS OBJ
if ws.Cells(i,3).Value is not None and ws.Cells(i,3).Value > 200:
print(ws.Cells(i,2).Value)
wb.Close(False)
xl.Quit
except Exception as e:
print(e)
finally:
ws = None
wb = None
xl = None
输出量
c
c
我不确定如何从excel文件解析,但是如果您使用的是xlrd模块,我认为类似的方法可能会起作用。
workbook = xlrd.open_workbook('read_file.xlsx')
worksheet = workbook.sheet_by_index(0)
for i in range(1,4):
if worksheet.cell(i, 2).value > 200:
print worksheet.cell(i,1)
对于循环范围,我认为您可以指定行数,但我现在不记得了。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.