python使用openpyxl实现对excel表格相对路径的超链接的创建方式

 更新时间:2024年03月05日 14:09:13   作者:假期的学习  
这篇文章主要介绍了python使用openpyxl实现对excel表格相对路径的超链接的创建方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教

使用openpyxl实现对excel表格相对路径的超链接的创建

 # 这个是相对路径,可以修改父文件夹(images这个文件夹名不能更改)
 # img_path: images路径下的图片名
sheet.cell(row=img_site1_2 + 1, column=img_site2_2).hyperlink = 'images\\' + img_path

其他相关代码

# 设置居中靠底部显示
    align2 = Alignment(horizontal='right', vertical='justify')
    try:
    	# 使用tqdm库进行进度条显示
        with tqdm(iterable=images, desc='图片导入', unit='张', total=len(images)) as pgbr:
            for img_path in images:
                # 处理图片名称(获取插入地址)
                img_sites = img_path.split('_')
                # 行数(需要+1)
                img_site1 = int(img_sites[0])
                img_site1_2 = img_site1
                # sheet.row_dimensions[img_site1+1].height=40
                img_site1 = str(img_site1+1)
                # 转换为int,方便使用这个值当数组下标去取clos的值,列数
                img_site2 = int(img_sites[1])
                # if img_site2 == 0:
                #     img_site2 = int(img_sites[2])
                img_site2_2 = img_site2 + 11
                # 数组取值从0开始,而获取到的值是从1开始,真正的列值
                img_site2 = cols[img_site2 - 1]
                # 图片真正的地址
                img_path_real = savepath2 + '\\' + img_path
                # 插入图片本地地址
                # 这个是绝对路径(换一台电脑就不好使了)
                # file_name = 'file:///' + img_path_real # 这个是多余的,链接生成自动会产生
                # 使用相对路径,换一台电脑也可以正常访问图片)
                sheet.column_dimensions[img_site2].width=18
                # sh = sheet.row_dimensions[img_site1_2+1].height
                # print("sh: ",sh)
                # 插入到excel中的位置
                position = img_site2 + img_site1
                # 这个是绝对路径,修改文件夹名称就不能用了
                # sheet.cell(row=img_site1_2 + 1, column=img_site2_2).hyperlink = img_path_real 
                # 这个是相对路径,可以修改父文件夹(images这个文件夹名不能更改)
                sheet.cell(row=img_site1_2 + 1, column=img_site2_2).hyperlink = 'images\\' + img_path
                sheet.cell(row=img_site1_2 + 1, column=img_site2_2).style = "Hyperlink"
                sheet.cell(row=img_site1_2 + 1, column=img_site2_2).value = '详情'
                sheet.cell(row=img_site1_2 + 1, column=img_site2_2).alignment = align2
                # 可能存在插入的是视频(视频就直接以文件形式插入)
                try:
                    img = Image(img_path_real)
                    img.width = 50
                    img.height = 50
                    # 插入图片
                    sheet.add_image(img, position)
                except Exception as e:
                    sheet.cell(row=img_site1_2 + 1, column=img_site2_2).value = '视频' + str(img_site1_2) + '_' + str(img_site2_2 - 11)
                    sheet.cell(row=img_site1_2 + 1, column=img_site2_2).alignment = Alignment(horizontal='center', vertical='center')
                # 进度条
                pgbr.update(1)
                pass
        path_filename2 = savepath + '\\' + 'xxx年xx月_' + '.xlsx'
        wb.save(path_filename2)
    except Exception as e:
        print(e)
        return e

openpyxl超链接添加

openpyxl的cell有属性hyperlink属性

这个属性可以设置超链接,如果只是想设置一列有超链接,可以用if来设置

def write_to_execl_link(filename = './新建.xlsx',title='sheet',sheet_header = [],sheet_data = []):
    import openpyxl
    wb = openpyxl.Workbook()
    ws = wb.active
    ws.title = title
    row0 = sheet_header
    for i, r in enumerate(row0):
        ws.cell(row=1, column=i + 1, value=r)
    for i, r in enumerate(sheet_data):
        for j, c in enumerate(r):
            # if i%2 == 1:
            #     ws.cell(row=i + 2, column=j + 1).fill = fill
            ws.cell(row=i + 2, column=j + 1, value=c)
            ws.cell(row=i + 2, column=j + 1).hyperlink = r[-1]
 
    wb.save(filename)

openpyxl获取文件内容的超链接

import openpyxl
import os
#将Excel文件放在python同级目录
dir_path  = os.path.dirname(os.path.realpath(__file__))
test_xlsx = os.path.join(dir_path,f'''test.xlsx''')
wb = openpyxl.load_workbook(test_xlsx)
sheet = wb.active
print(sheet.cell(1, 1).value)
print(sheet.cell(1, 1).hyperlink.target)

总结

以上为个人经验,希望能给大家一个参考,也希望大家多多支持脚本之家。

相关文章

  • 利用python对mysql表做全局模糊搜索并分页实例

    利用python对mysql表做全局模糊搜索并分页实例

    这篇文章主要介绍了利用python对mysql表做全局模糊搜索并分页实例,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2020-07-07
  • Python多线程 Queue 模块常见用法

    Python多线程 Queue 模块常见用法

    Python的Queue模块提供一种适用于多线程编程的FIFO实现。它可用于在生产者(producer)和消费者(consumer)之间线程安全(thread-safe)地传递消息或其它数据,因此多个线程可以共用同一个Queue实例。Queue的大小(元素的个数)可用来限制内存的使用
    2021-07-07
  • 使用Pandas计算系统客户名称的相似度

    使用Pandas计算系统客户名称的相似度

    在日常业务处理中,我们经常会面临将不同系统中的数据进行匹配和比对的情况,本文将介绍如何使用Python的Pandas库来处理这个问题,需要的可以参考一下
    2023-07-07
  • Python闭包实现计数器的方法

    Python闭包实现计数器的方法

    这篇文章主要介绍了Python闭包实现计数器的方法,分析了闭包的概念及实现计数器的相关技巧,需要的朋友可以参考下
    2015-05-05
  • Linux下python3.7.0安装教程

    Linux下python3.7.0安装教程

    这篇文章主要为大家详细介绍了Linux下python3.7.0安装教程,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2018-07-07
  • Python Request类源码实现方法及原理解析

    Python Request类源码实现方法及原理解析

    这篇文章主要介绍了Python Request类源码实现方法及原理解析,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2020-08-08
  • Python 查询学生的平均分数的实现

    Python 查询学生的平均分数的实现

    这篇文章主要为大家详细介绍了Python 查询学生的平均分数的实现,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2019-04-04
  • python使用Random随机生成列表的方法实例

    python使用Random随机生成列表的方法实例

    在日常的生活工作和系统游戏等设计和制作时,经常会碰到产生随机数,用来解决问题,下面这篇文章主要给大家介绍了关于python使用Random随机生成列表的相关资料,需要的朋友可以参考下
    2022-04-04
  • 两个命令把 Vim 打造成 Python IDE的方法

    两个命令把 Vim 打造成 Python IDE的方法

    这篇文章主要介绍了两个命令把 Vim 打造成 Python IDE,需要的朋友可以参考下
    2016-03-03
  • 利用Python实现自制文件搜索小工具

    利用Python实现自制文件搜索小工具

    当自己电脑文件很多还有点乱,不记得自己文件放哪里的时候,用电脑自带的搜索文件,这个等待时间可慢了。所以我们不如自己用python做一个搜索工具!犄角旮旯的文件都能一秒钟搜索出来的那种
    2022-09-09

最新评论