2016-12-15 98 views
3

我在xlsx電子表格中使用以下代碼片段進行超鏈接。超鏈接無法通過openpyxl工作

  1. 讀取文件名從H2,H3,H4 XLSX ...
  2. 搜索在當前文件夾中的文件(其中腳本運行)
  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(row = RowNum,column = 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') 

通過提及style屬性作爲「超鏈接」是關鍵。我擁有的所有其他代碼對您來說可能並不重要。 style屬性的值應該是'Normal' 奇怪的是,即使沒有style屬性,我們工作的超鏈接也只是它缺乏風格!當然。雖然很奇怪,但我看到了陌生的東西。希望這可以幫助。

+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


了Methode 3使用公式= HYPERLINK(聯繫,CELLTEXT)

實施例1:在細胞

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

顯示 'http://www.example.org'並在點擊時打開超鏈接http://www.example.org編輯。

實施例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

相關問題