2016-12-15 94 views
3

xlsxスプレッドシートのハイパーリンクには次のコードスニペットを使用していました。openpyxlでハイパーリンクが動作しない

  1. (スクリプトが実行されている)現在のフォルダ内のファイルを検索するには
  2. ... H2、H3、H4からのxlsxからファイル名を読み取り、
  3. 既存のコンテンツと検索パスでハイパーリンクを作成します。 。

問題は、事前に

おかげで作業しているopenpyxlから.hyperlinkとさえ= HYPERLINK( "パス"、 "実ファイル名")と書いていないです。

import os 
 
import openpyxl 
 

 
ColumnNum = 6 
 
RowNum = 2 
 
rootPath = "" 
 

 
def FindPathofFile(filename): 
 
    for root, dirs, files in os.walk(rootPath): 
 
     for file in files: 
 
      if filename in file: 
 
       return(os.path.join(root, file)) 
 

 
rootPath =input("Enter the Parent Path, Where the html files are present\n"); 
 
SpreadSheetName = input("Enter the SwCTS spread sheet name, in which Hyperlinks to be created\n"); 
 
wb = load_workbook(SpreadSheetName); 
 
ws = wb.get_sheet_by_name(input("Enter the SwCTS Tab Name, in which Hyperlinks to be created\n")); 
 
columnname = "H"+str(RowNum); 
 
valueofCell = ws[columnname].value; 
 
while True: 
 
    if valueofCell: 
 
    link = FindPathofFile(valueofCell); 
 
    print ('=HYPERLINK("'+str(link)+'","'+str(valueofCell)+'")'); 
 
    #ws.cell(row=RowNum, column=ColumnNum).hyperlink = link; 
 
    ws.cell(row=RowNum, column=ColumnNum).value ='=HYPERLINK("'+str(link)+'","'+str(valueofCell)+'")'; 
 
    RowNum = RowNum + 1; 
 
    columnname = "H"+str(RowNum); 
 
    valueofCell = ws[columnname].value; 
 
    else: 
 
    break; 
 
wb.save(SpreadSheetName);

+0

が見えます。 openpyxlは式を評価しませんが、セルのハイパーリンクはサポートしています。 –

+0

@CharlieClarkあなたがコメントしたスクリプト#ws.cell(行= RowNum、列= ColumnNum)を見るなら.hyperlink = link;もともとOpenpyXL経由のハイパーリンクに使用されていたので、私は他の代替メトーに行きました。 – Lucky

+0

@Luckyは代わりに 'xlsxwriter'を使用していますか?ありがとう。 – alecxe

答えて

0

まあ、私はこれに到着できました。ハイパーリンクを作成する直接的な方法はありませんが、あなたの場合はこのようにすることができます。実際、私はあなたのプログラムの徹底性をチェックしませんでした。私はあなたが他に何をしているか知っていると確信しています。以下のコードを使用して、既存のファイルへのハイパーリンクを作成することができました。私は、私が持っているものとあなたが持っているものとの間にわずかな論理的な違いしかないことがわかります。すなわち、「スタイル」属性が欠けている。

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') 

「ハイパーリンク」としてスタイル属性を記述することが重要です。私が持っている他のすべてのコードは、あなたにとってあまり重要ではないかもしれません。それ以外の場合は 'Normal'の値を持ちます 奇妙なことに、スタイル属性がなくてもハイパーリンクが動作しますが、スタイルが欠けていただけです!もちろん。奇妙なことですが、私は見知らぬものを見ました。お役に立てれば。

+0

は動作していないようで、他の方法を探しています。 – Lucky

0

@Luckyは、ハイパーリンクを作成できませんでした。

すべて以下MethodesはXLSXファイルに働いてハイパーリンクを書き込みます:セル内

from openpyxl.workbook import Workbook 
wb = Workbook() 
ws = wb.worksheets[0] 

link = 'http://www.example.org' 
linkText = 'Click here' 

Methodeの1

ws.cell(row=2, column=6).hyperlink = link 

ディスプレイ 'http://www.example.org' とハイパーリンクhttp://www.example.org開きますクリックした

Methodeの2

ws.cell(row=4, column=6).hyperlink = link 
ws.cell(row=4, column=6).value = linkText 

ディスプレイセルに 'こちらをクリックして' とクリックしたときに、ハイパーリンクhttp://www.example.orgを開きます。細胞内

ws.cell(row=6, column=6).value = '=HYPERLINK("http://www.example.org")' 

ディスプレイ 'http://www.example.org'

実施例1(式= HYPERLINK(リンク、cellText)を使用


Methodeの3 クリックするとハイパーリンクhttp://www.example.orgが開きますed。

例2:細胞内の

ws.cell(row=8, column=6).value = '=HYPERLINK ("http://www.example.org", "Click here")' 

ディスプレイ 'ここクリック' とクリックしたときに、ハイパーリンクhttp://www.example.orgを開きます。

例3:

ws.cell(row=10, column=6).value = '=HYPERLINK("http://www.", "Click ") & "example.org"' 

ディスプレイセルに 'をクリックしてをexample.orgの' とクリックしたときに、ハイパーリンクhttp://www.example.orgを開きます。

のPythonでテスト

:3.4.2 - openpyxl:2.4.1 - LibreOfficeの:あなたは、ハイパーリンクを作成するための式を使用しているよう4.3.3.2

関連する問題