关于#python#的问题:合并后会变超链接,但是excel的超链接有条数限制,超过的部分会变空值(相关搜索:用python)

用python 合并excel,excel里边有几列网址,合并后会变成可以直接点击的超链接,但是excel的超链接有条数限制,超过的部分会变空值,怎么让合并后的文件不带超链接,可以全都显示

df1=pd.read_excel('D:/桌面/111/工作簿1.xlsx')
df2=pd.read_excel('D:/桌面/111/工作簿2.xlsx')
result = pd.concat([df1,df2])
result.to_excel('D:/桌面/工作簿3.xlsx',index=False)

img

要让合并后的 Excel 文件不带超链接,可以在保存文件时指定参数 engine='openpyxl',并将超链接转换为普通文本。

以下是修改后的代码示例:

import pandas as pd
from openpyxl.styles import NamedStyle

# 读取 Excel 文件
df1 = pd.read_excel('D:/桌面/111/工作簿1.xlsx')
df2 = pd.read_excel('D:/桌面/111/工作簿2.xlsx')

# 合并数据
result = pd.concat([df1, df2])

# 将超链接转换为文本
for column in result.columns:
    if "http" in result[column].dtype.name:
        result[column] = result[column].astype(str)
        
# 保存为新的 Excel 文件
result.to_excel('D:/桌面/工作簿3.xlsx', index=False, engine='openpyxl')

# 打开新文件并设置格式
book = openpyxl.load_workbook('D:/桌面/工作簿3.xlsx')
writer = pd.ExcelWriter('D:/桌面/工作簿3.xlsx', engine='openpyxl') 
writer.book = book
writer.sheets = dict((ws.title, ws) for ws in book.worksheets)

# 移除所有超链接格式
for sheetname in writer.sheets:
    ws = writer.sheets[sheetname]
    for row in ws.iter_rows():
        for cell in row:
            if cell.hyperlink:
                cell.hyperlink = None
                cell.style = NamedStyle(name='Normal')

# 保存修改后的文件
writer.save()
writer.close()


这段代码首先使用 pandas 将两个 Excel 文件合并,并将超链接列的数据类型转换为字符串。然后,使用 openpyxl 库打开新的 Excel 文件,并逐个单元格移除超链接并将样式设置为普通文本。最后保存修改后的文件。

请确保在运行代码之前已经安装了 openpyxl、pandas 和 xlrd 这些库

【以下回答由 GPT 生成】

要解决合并后的Excel文件中超链接变为空值的问题,可以使用openpyxl库来操作Excel文件,并修改超链接列的格式。以下是具体的解决方案:

首先,确保你已经安装了openpyxl库,可以通过运行以下命令来安装:

pip install openpyxl

接下来,将下面的代码添加到你的Python脚本中:

import openpyxl

# 读取合并后的Excel文件
wb = openpyxl.load_workbook('D:/桌面/工作簿3.xlsx')
sheet = wb.active

# 遍历每一行,将超链接列的格式修改为文本
for row in sheet.iter_rows(min_row=2, min_col=1):
    for cell in row:
        if cell.hyperlink is not None:
            cell.hyperlink = None
            cell.value = cell.hyperlink.target

# 保存修改后的Excel文件
wb.save('D:/桌面/工作簿3.xlsx')

这段代码通过使用openpyxl库遍历合并后的Excel文件的每一行,将超链接列的格式修改为文本。然后,保存修改后的Excel文件。

注意:在代码中,min_row=2表示从第二行开始遍历,因为第一行是标题行,无需修改。如果你的Excel文件的起始行不同,请根据需要进行调整。

希望这个解决方案能够解决你的问题!



【相关推荐】



如果你已经解决了该问题, 非常希望你能够分享一下解决方案, 写成博客, 将相关链接放在评论区, 以帮助更多的人 ^-^