python操作excel:批量为多个sheet页生成超链接 您所在的位置:网站首页 excel添加超链接公式 python操作excel:批量为多个sheet页生成超链接

python操作excel:批量为多个sheet页生成超链接

2023-08-08 00:29| 来源: 网络整理| 查看: 265

python操作excel:批量为多个sheet页生成超链接

目录 需求解决办法举一反三

需求

excel文件内存在多个sheet页,想要将总表中的信息进行关联和对应的sheet页进行关联,可以通过总表部分,快速调到特定的sheet页。一看excel里边要为好几百个sheet页加超链接,看着都头大。 在这里插入图片描述 有问题,相应的就有解决问题的对策。

解决办法

网上其实有很多办法,就不一一说明了。直接总结下自己的处理办法。

最基本的原理就是对 **HYPERLINK函数**的使用。

HYPERLINK函数的语法1如下:

HYPERLINK(link_location,friendly_name). 说明: HYPERLINK 为函数名 link_location 为链接位置 friendly_name 为显示文本

举例:

比如A1单元格,输入公式:=HYPERLINK("#B8",“跳转到B8”) 意思是单击A1单元格,将跳转到B8单元格。

因此,就是对我们想要进行添加超链接的单元格,赋值为:"=HYPERLINK(link_location,friendly_name)" ,主要是对参数link_location和参数friendly_name 的迭代更新。

看一个具体的表格信息: 在这里插入图片描述 针对这一表格,对应的python实现如下:

import pandas as pd import warnings warnings.filterwarnings('ignore') filename = r'超链接测试文件.xls' data = pd.read_excel(filename,sheet_name=None) # sheet_name参数,很重要,在这里 with pd.ExcelWriter('添加超链接后的文件.xls',engine='xlsxwriter') as writer: sheet_names = list(data.keys()) for s_name in sheet_names[1:]: # 生成超链接字符串 hypre_link = r'=HYPERLINK("#'+s_name+'!a1' + '\",\"'+s_name+ '")' flag = data['总表']['table_comment']==s_name print(hypre_link) data['总表'].ix[flag,1] = hypre_link data[s_name].to_excel(writer,sheet_name=s_name,index=False) data['总表'].to_excel(writer,sheet_name='总表',index=False)

打印出来的超链接函数值:

=HYPERLINK("#行政许可信息!a1","行政许可信息") =HYPERLINK("#问题台账!a1","问题台账") =HYPERLINK("#公告信息!a1","公告信息") =HYPERLINK("#公告记录!a1","公告记录") =HYPERLINK("#更正公告信息!a1","更正公告信息")

完美可以跳转,结果文件如下图所示:

在这里插入图片描述

上述源码和测试文件结果,想全部获取的可以扫码关注微信公众号,回复关键字【超链接】,来获取下载。

举一反三

上述案例说明的是对excel内部的sheet页进行添加超链接。其实,对于想要超链接其他的文件处理的思路都是一样的,就是对 HYPERLINK(link_location,friendly_name) 函数的参数赋予相应的位置信息而已。

下述的代码案例,相对来说比较复杂,主要是我的个人工作内容的一个备份。看到此处的博友可以忽略。 在这里插入图片描述

import pandas as pd import re import warnings warnings.filterwarnings('ignore') idc_filename = r'C:\Users\14369\Desktop\20210222 idc信息处理\idc同步数据统计表20201231.xlsx' datamulu_filename = r'C:\Users\14369\Desktop\20210222 idc信息处理\数据20201215.xlsx' idc_data = pd.read_excel(idc_filename) # datamulu = pd.read_excel(datamulu_filename) datamulu = pd.read_excel(datamulu_filename,sheet_name=None) idc_data_copy = idc_data.copy(deep=True) #声明一个读写对象 counts = 0 # 记录处理了几个文件 with pd.ExcelWriter('result.xls',engine='xlsxwriter') as writer: # 插入对应的表字段 for comment in idc_data['table_comment']: for sheetname in datamulu.keys(): try: name = re.split(r'[-_]',comment)[1] except: print(comment) continue flags = [name in m for m in datamulu[sheetname]['数据资源名称']] if sum(flags)>0: counts +=1 # print(counts,comment) temp_data = datamulu[sheetname].ix[flags,:] temp_data.to_excel(writer,sheet_name=name,index=False) # 生成超链接字符串并修改对应的表格位置内容 hypre_link = r'=HYPERLINK("#'+name+'!a1' + '\",\"'+comment+ '")' idc_data_copy.ix[idc_data['table_comment']==comment,1] = hypre_link break idc_hyp_true = ['HYPERLINK' in com for com in idc_data_copy['table_comment']] idc_hyp_false = [not i for i in idc_hyp_true] idc_data_copy.ix[idc_hyp_true,:].to_excel(writer,sheet_name='tab20201231_有超链接',index=False) # 总表 idc_data_copy.ix[idc_hyp_false,:].to_excel(writer,sheet_name='tab20201231_无超链接',index=False) # 总表

常有问题是一种好现象,说明你是在走上坡路!

hyperlink函数用法介绍 ↩︎



【本文地址】

公司简介

联系我们

今日新闻

    推荐新闻

    专题文章
      CopyRight 2018-2019 实验室设备网 版权所有