换个思路:python 开打excle中的超链接

背景:
在工作中,需要对一个Excel表格的内容进行快速搜索关键字,然后点击选中对应的文本的超链接,但是该工作表格为xlsm的格式,常规用excel打开会加载很多的东西,速度超级慢,最近正在学习,python 所以想到用python来打开表格,快速定位到其中的关键字,然后打开对应的文本,提供一种思路:
(也可以用vba来读取,但是太慢了。。。)
原始表格如下:
在这里插入图片描述
关键字的获取是在Excel中的“I”列,超链接在J列,使用额openpyxl,查了很多资料都没法获得对应的超链接地址,于是就查看对应超链接 的格式,然后,创建对应文件的超链接,使用os.system()直接的打开对应的表格,这样达到了打开超链接的目的。代码如下:

# -*- coding: utf-8 -*-
"""
Created on Fri Aug 30 09:31:31 2019
@author: LS
"""

import openpyxl
import os

def get_file_name(i):
	#获得链接的名字,日期格式分离,把日期当作字符串提取,然后再分离,这个可以依据自己的链接进行处理。
    time_name=(str(ws.cell(column=5,row=i+1).value)).split(r'-')
    time_name2=time_name[2].split()  
     #根据文件名字进行分类
    if  'IDEABOOK' in ws.cell(column=1,row=i+1).value:
        time_list=time_name[0]+time_name[1]+time_name2[0]
    else:            
        time_list=time_name[0]+'_'+time_name[1]+'_'+time_name2[0]  
    #文件名字
    filename_combie=ws.cell(column=1,row=i+1).value+'_L'+str(ws.cell(column=7,row=i+1).value)+'_St'+str(ws.cell(column=8,row=i+1).value)+'_'+time_list+'.xlsm'
    print('Open:'+filename_combie)
    return filename_combie

while True:
    #输入关键字进行索引  
    print("------------------------------------------------.")
    print("------------Input word to search----------------.")
    print("----------IF you want quit input 'Q'------------.")
    print("------------------------------------------------.")
    Key_search=str(input('Input:'))
    if Key_search=='Q':
        break
    #Key_search='无法识别二维码现象'
    print('Your search:%s'%Key_search)
    file_folder=os.getcwd() #文件的存放地址文件夹,可以改为自己的存放路径;
    Tracking_list_name=file_folder+'\\'+'Tracking_List.xlsm'
    # **打开excel文件,获取工作簿对象**
    wb = openpyxl.load_workbook(Tracking_list_name)    # 从工作薄中获取一个表单(sheet)对象
    sheets = wb.sheetnames        #print(sheets, type(sheets))
    ws = wb.active
    #获取表格的总列数
    print('表格总共:{}行 {}列'.format(ws.max_row, ws.max_column))
    #获取表格的第几列的数值以及清单
    list_Tran=[]
    Col_range=ws['I']  #关键字都再I列,所以就直接获取I列的数值,并存入数组,
    for col in Col_range:
        list_Tran.append(col.value)
    #print(list_Tran)
    #查找到对应的文件是否存在并且打开对应的文件。
    list_Tran_no=[]
    for i in range(0,len(list_Tran)):
        if Key_search in list_Tran[i]:
            print("there are an sample,in list: %d" %i)
            #获得对应表格的时间并且改为名字的列表
            print("---->No%d---->: Detailshow:%s"%(i,list_Tran[i]))
            list_Tran_no.append(i)
    i=123 
    #  关键字都再I列,所以就直接获取I列的数值,并存入数组,
    if len(list_Tran_no)>=1:
        while i>0:
            print('input the index you want open:')
            print('Open nothing input: -1')
            i=int(input('Input index:'))
            if i==-1:
                break
            getname=get_file_name(i)
            os.system(file_folder+'\\Track_Doc_Version_001\\'+getname) #打开对应的文件
    else:
        print("There no refernece history.")

运行后效果
输入在这里插入图片描述
输入‘Q’退出,当表格中有很多的数据时候,先进行内容输出,然后输入对应的序列号进行选择,打开对应的文件,每次打开一个,当关闭后,提示输入的字符,如果是-1,则退出到上一步。

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值