如何在win32com中迭代工作表?

时间:2016-12-31 11:17:28

标签: python excel python-2.7 python-3.x

我生成一个包含大量工作表的xlsx文件,当我用Excel手动打开它时,我想带我到特定的位置。此功能可以完成工作,但仅限一张纸。如何将其应用于工作簿中的所有工作表?

import win32com.client

def select_cell():
    xl = win32com.client.gencache.EnsureDispatch('Excel.Application')

    wb = xl.Workbooks.Open(r'H:\Files\1.xlsx')
    ws = xl.ActiveSheet
    ws.Range('B100').Select()
    wb.Close(True)
    xl.Quit()

select_cell()

我想做这样的事情:

import win32com.client

def select_cell():
    xl = win32com.client.gencache.EnsureDispatch('Excel.Application')
    wb = xl.Workbooks.Open(r'H:\Files\1.xlsx')
    for ws in wb.Worksheets():
        ws.Range('B100').Select()

    wb.Close(True)
    xl.Quit()

select_cell()

2 个答案:

答案 0 :(得分:1)

我测试时,你的脚本什么都没做。

根据我的测试,下面的脚本运行良好。

_

答案 1 :(得分:0)

为了在新生成的文档中使用特定单元格,必须执行这两个表达式:

ws.Range('k100').Value = 1
ws.Range('k100').Select()

要在工作簿的每个工作表中执行此操作:

def select_cell():
    xl = win32com.client.gencache.EnsureDispatch('Excel.Application')
    wb = xl.Workbooks.Open(r'H:\Files1.xlsx')

    for sh in wb.Sheets:

        xl.Worksheets(sh.Name).Activate()
        ws = xl.ActiveSheet
        ws.Range('k100').Value = 1
        ws.Range('k100').Select()


    wb.Close(True)
    xl.Quit()

上面的代码将带您到书中每个工作表上的K100。