【发布时间】:2016-12-31 11:17:27
【问题描述】:
我生成了一个包含很多工作表的 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()
【问题讨论】:
-
使用第二个脚本时发生了什么?
-
对于 wb.Worksheets() 中的 ws:文件“C:\Users\1\AppData\Local\Temp\gen_py\2.7\00020813-0000-0000-C000-000000000046x0x1x7\Sheets.py” ,第 113 行,在 call 中 ret = self._oleobj_.InvokeTypes(0, LCID, 2, (9, 0), ((12, 1),),Index pywintypes.com_error: (-2147352567 , '发生异常。', (0, None, None, None, 0, -2147352571), 1)
-
您是否尝试将
for ws in wb.Worksheets():替换为for sh in wb.Sheets:然后ws = wb.Worksheets(sh.Name)? -
它确实有效,谢谢。我能够迭代并在同一个单元格中的所有值中放置一个值。不幸的是,ws.Range('B100').Select() 给出了一个错误:类 Range 中的方法 Select 未正确完成。因此,我仍然无法像在第一个示例中那样在每个工作表中设置打开点,也无法像 Excel 在您手动滚动然后关闭文档时所做的那样。
-
您是否尝试修改
ActiveSheet以探索所有for sh in wb.Sheets:? ==> 提议xl.Worksheets(sh.Name).Activate(),然后是ws = xl.ActiveSheet...
标签: python excel python-2.7 python-3.x