将列表导出到Excel并创建超链接-由于元组数据而出错

sd2nnvve  于 2023-06-25  发布在  其他
关注(0)|答案(1)|浏览(92)

我有一个由元组组成的列表,我想使用Python导出到Excel。该清单的结构如下:
[('ABC-12345','hello','world',' https://mycompany.com/browse/ABC-12345'),...,('ABC-12360','good','night',' https://mycompany.com/browse/ABC-12360')]
最重要的是,每个列表行中的第一个元素,即“ABC-12345”,转换为超链接。链接的URL是第四个元素,即''https://mycompany.com/browse/ABC-12345''.为了解决这个问题,我尝试使用openpyxl中的Workbook和一个for循环,其中我用第四个元素作为超链接覆盖第一列。这会引发一个元组错误,因为for循环需要n是整数或布尔值。
我从代码开始:

from openpyxl import Workbook

search = [('ABC-12345', 'hello', 'world', 'https://mycompany.com/browse/ABC-12345'),
    ...,
    ('ABC-12360', 'good', 'night', 'https://mycompany.com/browse/ABC-12360')]

wb = Workbook()
ws = wb.active
search_row = 1
search_column = 1

for n in search:
    row = search[n]
    ws.cell(row=n, column=n).value = row[0]
    ws.cell(row=n, column=n).hyperlink = row[3] # Overwriting cell n to create hyperlink
    n = n + 1

wb.save("testReport.xlsx")

为了绕过元组错误,我尝试在enumerate(search):''中为n写'',但没有成功。因此,我改变了我的方法,并尝试使用:

import numpy as np
import csv
import pyexcel
from pyexcel._compact import OrderedDict

search = [('ABC-12345', 'hello', 'world', 'https://mycompany.com/browse/ABC-12345'),
    ...,
    ('ABC-12360', 'good', 'night', 'https://mycompany.com/browse/ABC-12360')]

# Converting list of tuple to array
arr = np.asarray(search)

# Adding array to a dictionary
dictionary = {'Sheet 1': arr}

pyexcel.save_book_as(
    bookdict = dictionary,
    dest_file_name = "testReport.xlsx"
)

data = OrderedDict()
data.update({"Sheet 1": dictionary['Sheet 1']})

这确实给予了我一个excel文件,但.xls似乎是一个过时的文件类型,每次我运行该程序时,我都需要删除现有的文件,因为文件名已经在使用中。编辑xls文件的自由度似乎也很小-我没有找到创建超链接的方法。继续,因为我在这些库中没有找到解决方案,我想也许我可以将这个方法与我的第一个方法结合起来。这就要求我将文件保存为.xlsx,这样我就回到了元组问题。
有什么办法能解决这个问题吗?感谢您的建议。

jk9hmnmh

jk9hmnmh1#

我猜你想要的是:

for n, row in enumerate(search, start=1):
    ws.cell(row=n, column=1).value = row[0]
    ws.cell(row=n, column=1).hyperlink = row[3] # Overwriting cell n to create hyperlink

wb.save("testReport.xlsx")

相关问题