office是不是python的打开方式_python打开excel文件的2种方法(基于win32com)

excel文件打开,会遇到两种不通的场景:excel文件还没有打开,直接打开操作

文件一定打开,需要脚本获取到已打开的文件,然后再操作

【1】直接打开

import win32com.client as win32

xl_app = win32.gencache.EnsureDispatch("Excel.Application")

注意:如果没有打开任何的excel文件,它会新建一个application;如果已经打开,就不会新开一个application。因此,使用结束后,如果释放了这个application,就会把之前打开的其他文件也关闭了,这个关闭的时候需要注意

【2】获取已经打开的excel的对象,不用重复打开

import win32com.client as win32

xl_app = win32.gencache.EnsureDispatch("Excel.Application")

file_name = "test.xlsx"

already_open = 0

for wb in xl_app.Workbooks:

if(sb.Name == file_name):#wb.Name只返回文件的名字,不包含路径

my_wb= wb#获取已打开的文件的workbook的对象

already_open =1

break

if(already_open==0):#需要新打开文件

my_wb = xl_app.Workbooks.Open(file_name)

第二种方法在调试的时候经常会用到,尤其是需要不停调整excel内容的时候,免去了反复打开关闭,提高了效率

备注:如果本文有帮到你,欢迎点赞

Python中,使用Win32com库可以控制Windows应用程序,比如Microsoft Office系列。如果要检查一个Word文档(doc)中的内联形状(inline_shape)是否为Excel工作簿,并在确认后打开它,可以通过以下步骤实现: 1. 首先,确保安装了`pywin32`库,如果没有安装,可以通过`pip install pywin32`进行安装。 2. 使用`win32com.client`模块创建一个Word应用程序的实例。 3. 打开指定的Word文档。 4. 遍历文档中的所有内联形状,检查它们的类型。 5. 如果某个内联形状是链接到一个Excel工作簿,通过其路径打开Excel文件。 以下是一个简单的代码示例: ```python import win32com.client as win32 def open_excel_from_word(doc_path): # 创建Word应用程序实例 word = win32.gencache.EnsureDispatch('Word.Application') word.Visible = False # 可以设置为True,以便看到操作过程 # 打开Word文档 doc = word.Documents.Open(doc_path) # 遍历文档中的所有内联形状 for inline_shape in doc.InlineShapes: # 检查形状是否链接到文件 if inline_shape.Type == 13 and inline_shape.LinkToFile: # 获取文件路径 file_path = inline_shape.LinkTo # 检查文件路径是否包含.xlsm或.xlsx后缀,这里只是一个简单的检查方法 if file_path.lower().endswith(('.xlsm', '.xlsx')): # 打开Excel工作簿 excel = win32.gencache.EnsureDispatch('Excel.Application') excel.Visible = True # 可以设置为True,以便看到Excel窗口 workbook = excel.Workbooks.Open(file_path) # 这里可以进行进一步操作,如读取数据等 # 关闭Word文档 doc.Close(False) # 关闭Excel工作簿 workbook.Close(False) # 关闭Excel应用程序 excel.Quit() return # 关闭Word文档 doc.Close(False) # 关闭Word应用程序 word.Quit() # 使用函数,传入Word文档路径 open_excel_from_word("path_to_your_document.docx") ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值