python生成带超链接的excel表格

前提:项目里已经有函数功能将数据库数据生成excel表格

需求:将现有的excel表格数值覆盖为url超链接

利用pandas直接写入

优点:

  1. 省事,只要把数值用原始的excel函数 =HYPERLINK 替代,生成的表格数值既是超链接
  2. 用pandas.to_excel() 即可直接生成表格,只要传入的参数没有遗漏,一般表格不会出错

缺点:

  1. 原始的excel函数限制参数不能超过255个字符长度,导致某些长度较长的超链接不能正常生效

利用xlsxwriter直接写入

优点:

  1. 可xlsxwriter.write_url写入超长的url链接(限制2079个字符),像pandas只能用原始的excel函数 =HYPERLINK 写入超链接(限制255个字符)

缺点:

  1. 破坏原有代码结构(现在项目里已经有代码自动生成excel表格,只是不带url数据)
  2. excel表格里每个格子都需要用代码控制写入,代码量较大,可能会有遗漏
        wordbook = None
    	try:
            wordbook = xlsxwriter.Workbook(file_path)
            sheet = wordbook.add_worksheet('Sheet')  # 创建一个新的sheet
         
            for 列名:
                    sheet.write(0, colume + 1, value['label']) # 写列名
            for:
            	for:
                    sheet.write_url(row_num + 1, column_num + 1, url, string = str(value))  # 写入url
        finally:
            if wordbook is not None:
                wordbook.close()

pandas读取表格,然后xlsxwriter覆盖

pandas.read_excel 可以 返回一个pandaDataFrame,然后利用这个DF的数据可以用xlsxwriter重写覆盖数据

优点:

  1. 读到的数据是表格原有的数据(写入表格的数据可能会缺失)

缺点:

1. xlsxwriter写入的时候会触动原有表格的清空(既需要整张excel表格的数据都需要重新写入,即使有些数据你并不想修改)

pandas读取数据


    A   B   C
0   0   2   3
1   0   4   1
2  10  20  30
df = pandas.read_excel()
df.iat[1, 2]  # 读取第一行第二列
df.iloc[0] # 第一行的数据 <class 'pandas.core.series.Series'>
df.iloc[[0]] # 第一行的数据 <class 'pandas.core.frame.DataFrame'>
df.loc['row_name'] # 读取索引为row_name的这一行数据
row_count = df.shape[0] # 总行数
col_count = df.shape[1] # 总列数



最终方案

  1. 其实原始的excel表格也是利用pandas.to_excel()进行生成的,这里传入的参数也是 pandas.DataFrame 结构的数据
  2. 我们可以直接在代码里拿到这个DataFrame数据,然后再利用xlsxwriter生成对应的表格数据

缺点:

  1. 用xlsxwriter写入可能会有遗漏和出错,没有直接调用pandas.to_excel方便
    原文作者:lingling-fa
    原文地址: https://blog.csdn.net/weixin_43960117/article/details/117822457
    本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。
点赞