使用 Python win32com 获取 Excel 工作表列表
Using Python win32com to get list of Excel worksheets
正在寻找一种使用 Python 中的 win32com 获取 Excel 工作簿中工作表列表的简单方法 3. 我宁愿避免迭代,但找不到函数来这样做。
- 调用
.Sheets
property of the workbook, returns a Sheets 集合,<win32com.gen_py.Microsoft Excel 16.0 Object Library.Sheets instance at 0x1597583762504>
- 为了得到每个sheet,你必须迭代,其中returns一个对象,
<win32com.gen_py.Microsoft Excel 16.0 Object Library._Worksheet instance at 0x1597583219080>
每个sheet.
- 要获取每个 sheet 的名称,您必须使用
.Name
方法
- 如下图,用列表推导就可以轻松得到
sheet_names
- 或者,您可以通过以下方式获取工作sheet 对象的字典
ws = {f'ws{i}': wb.Sheets(sheet.Name) for i, sheet in enumerate(wb.Sheets)}
- 用
ws['ws0'].Range('A1').Value = 1
赋值
函数
import win32com.client as win32
from pathlib import Path
import sys
win32c = win32.constants
def run_excel(f_path: Path, f_name: str) -> list:
filename = f_path / f_name
# create excel object
excel = win32.gencache.EnsureDispatch('Excel.Application')
# excel can be visible or not
excel.Visible = True # False
# try except for file / path
try:
wb = excel.Workbooks.Open(filename)
except com_error as e:
if e.excepinfo[5] == -2146827284:
print(f'Failed to open spreadsheet. Invalid filename or location: {filename}')
else:
raise e
sys.exit(1)
# get worksheet names
sheet_names = [sheet.Name for sheet in wb.Sheets]
wb.Close(True)
excel.Quit()
return sheet_names
设置和函数调用
# file path
f_path = Path.cwd() # file in current working directory
# f_path = Path(r'c:\...\Documents') # file located somewhere else
# excel file
f_name = 'test.xlsx'
# function call
run_excel(f_path, f_name)
# output
['Sheet1', 'Sheet2', 'Sheet3', 'Sheet4']
# create a worksheet object
ws1 = wb.Sheets('Sheet1')
正在寻找一种使用 Python 中的 win32com 获取 Excel 工作簿中工作表列表的简单方法 3. 我宁愿避免迭代,但找不到函数来这样做。
- 调用
.Sheets
property of the workbook, returns a Sheets 集合,<win32com.gen_py.Microsoft Excel 16.0 Object Library.Sheets instance at 0x1597583762504>
- 为了得到每个sheet,你必须迭代,其中returns一个对象,
<win32com.gen_py.Microsoft Excel 16.0 Object Library._Worksheet instance at 0x1597583219080>
每个sheet. - 要获取每个 sheet 的名称,您必须使用
.Name
方法
- 为了得到每个sheet,你必须迭代,其中returns一个对象,
- 如下图,用列表推导就可以轻松得到
sheet_names
- 或者,您可以通过以下方式获取工作sheet 对象的字典
ws = {f'ws{i}': wb.Sheets(sheet.Name) for i, sheet in enumerate(wb.Sheets)}
- 用
ws['ws0'].Range('A1').Value = 1
赋值
函数
import win32com.client as win32
from pathlib import Path
import sys
win32c = win32.constants
def run_excel(f_path: Path, f_name: str) -> list:
filename = f_path / f_name
# create excel object
excel = win32.gencache.EnsureDispatch('Excel.Application')
# excel can be visible or not
excel.Visible = True # False
# try except for file / path
try:
wb = excel.Workbooks.Open(filename)
except com_error as e:
if e.excepinfo[5] == -2146827284:
print(f'Failed to open spreadsheet. Invalid filename or location: {filename}')
else:
raise e
sys.exit(1)
# get worksheet names
sheet_names = [sheet.Name for sheet in wb.Sheets]
wb.Close(True)
excel.Quit()
return sheet_names
设置和函数调用
# file path
f_path = Path.cwd() # file in current working directory
# f_path = Path(r'c:\...\Documents') # file located somewhere else
# excel file
f_name = 'test.xlsx'
# function call
run_excel(f_path, f_name)
# output
['Sheet1', 'Sheet2', 'Sheet3', 'Sheet4']
# create a worksheet object
ws1 = wb.Sheets('Sheet1')