只读 Excel 个具有值 python 的单元格 win32com
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 or Worksheet.Cells Property。此外,通常在 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 文档,如下所示
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 or Worksheet.Cells Property。此外,通常在 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