我如何迭代win32com中的工作表?

我生成一个xlsx文件有很多工作表,我想带我在特定的位置,当我用Excel手动打开它。 这个function只做一张纸而已。 我如何将它应用于工作簿中的所有工作表?

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() 

当我testing它时,你的脚本什么都没做。

下面的脚本根据我的testing正常工作。

 import xlsxwriter # Create an new Excel file and add a worksheet. workbook = xlsxwriter.Workbook('C:\\Users\\Excel\\Desktop\\book1.xlsx') worksheet = workbook.add_worksheet() # Widen the first column to make the text clearer. worksheet.set_column('A:A', 20) # Add a bold format to use to highlight cells. bold = workbook.add_format({'bold': True}) # Write some simple text. worksheet.write('A1', 'Hello') # Text with formatting. worksheet.write('A2', 'World', bold) # Write some numbers, with row/column notation. worksheet.write(2, 0, 123) worksheet.write(3, 0, 123.456) workbook.close() 

为了被带到新生成的文档中的特定单元格,需要执行这两个expression式:

 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。