如何在openpyxl中将本地图片的超链接写入单元格?

时间:2013-02-18 04:51:03

标签: python excel hyperlink openpyxl

我使用的是Python 2.7.3 我需要通过openpyxl库将本地图片的超链接写入单元格。

当我需要添加到网站的超链接时,我写了这样的内容:

来自openpyxl导入工作簿

wb = Workbook()

dest_filename = r'empty_book.xlsx'

ws = wb.worksheets[0]

ws.title = 'Name'

hyperlink to local picture

ws.cell('B1').hyperlink = ('http://pythonhosted.org/openpyxl/api.html')

hyperlink to local picture

ws.cell('B2').hyperlink = ('1.png') # It doesn't work! 

wb.save(filename = dest_filename)

我有3个问题:

  1. 我们如何编写VBA样式函数的超链接: ActiveCell.FormulaR1C1 = _ "=HYPERLINK(""http://stackoverflow.com/questions/ask"",""site"")" 与hyherlink和她的名字
  2. 我们如何编写超链接到本地​​图像? ws.cell('B2').hyperlink = ('1.png') # It doesn't work! And I don't now what to do ) Plese, help me )
  3. 我们可以使用unicode超链接来映像吗?例如,当我使用时 ws.cell('B1').hyperlink = (u'http://pythonhosted.org/openpyxl/api.html') It fail with error! for example we have picture 'russian_language_name.png' and we create hyperlink in exel without any problem. We click to the cell, and then print '=Hyperlink("http://stackoverflow.com/questions/ask";"site_by_russian_language")
  4. 保存文件,解压缩他。然后我们转到他的目录xl-> worksheets-> sheet1.xml 我们看到标题

    <?xml version="1.0" encoding="UTF-8" standalone="true"?>

    然后......

    row r="2" x14ac:dyDescent="0.25" spans="2:6">-<c r="B2" t="str" s="1"><f>HYPERLINK("http://stackoverflow.com/questions/ask","site_by_russian_language")</f><v>site_by_russian_language</v></c>

    一切正常=)Exel支持unicode,但是python的库openpyxl怎么样?它支持超链接中的unicode?

3 个答案:

答案 0 :(得分:0)

由于.xlsx文件中的文件是带有UTF-8编码的XML文件,因此Unicode超链接不是问题。

答案 1 :(得分:0)

关于问题2,我认为您需要包含文件链接的完整路径。 如果您无法访问Excel文件中的文件链接,则禁止此类操作的是Excel的安全策略。

答案 2 :(得分:-1)

我回答了类似的问题。希望这可以帮助。

嗯,我可以到达这里。虽然没有直接的方法来构建超链接,但在您的情况下我们可以这样做。我能够使用以下代码构建指向现有文件的超链接。

wb=openpyxl.Workbook() s = wb.get_sheet_by_name('Sheet') s['B4'].value = '=HYPERLINK("C:\\Users\\Manoj.Waghmare\\Desktop\\script.txt", "newfile")' s['B4'].style = 'Hyperlink' wb.save('trial.xlsx') 通过将style属性称为“Hyperlink”是关键。我拥有的所有其他代码对您来说可能并不重要。否则,样式属性将具有'正常'的值奇怪的事情即使没有样式属性,我们工作的超链接,但只是它缺乏风格!当然。虽然很奇怪,但我看到了一些陌生的东西。希望这会有所帮助。