2011-08-14 16 views
10

Czytam an Excel file przy użyciu xlrd. W jednej kolumnie mam nazwę firmy, która jest sformatowana jako hiperlink (co oznacza, że ​​znajduje się za nią URL). Kiedy dostaję wartość komórki, otrzymuję tylko nazwę firmy. Jak mogę uzyskać adres URL?Uzyskiwanie adresu URL hiperłącza z dokumentu Excela

Poniżej znajduje się kod do odczytu pliku Excela przy użyciu modułu xlrd (pliki atrybutów są importowane).

mainData_book = xlrd.open_workbook("IEsummary.xls", formatting_info=True) 
mainData_sheet = mainData_book.sheet_by_index(0) # Get the first sheet 0 
start = 1 
end = 101 
for counter in range(start, end): 
    rowValues = mainData_sheet.row_values(counter, start_colx=0, end_colx=8) 
    company_name = rowValues[0] #how i can get link here also?? 
+0

proszę pisać jakiś kod, dzięki czemu możemy mieć podstawę do odpowiedzi z! Spróbuj też poprawić tytuł, by zawierał odpowiednie słowa kluczowe. – DGM

+1

@Aamir Adnan Dodano link do przykładowego pliku. Czy poprawnie uchwyciłem strukturę? Możesz go zastąpić linkiem do przykładowego pliku. – phihag

+0

@phihag: dziękuję, to ma teraz więcej sensu na pytania :) (nie wiem dlaczego mam negatywny głos w tej sprawie to jest prawdziwe pytanie chłopaki, proszę, pomóżcie hojnie) –

Odpowiedz

8

W xlrd 0.7.2 lub nowszej, można użyć hyperlink_map:

import xlrd 
mainData_book = xlrd.open_workbook("IEsummary.xls", formatting_info=True) 
mainData_sheet = mainData_book.sheet_by_index(0) 
for row in range(1, 101): 
    rowValues = mainData_sheet.row_values(row, start_colx=0, end_colx=8) 
    company_name = rowValues[0] 

    link = mainData_sheet.hyperlink_map.get((row, 0)) 
    url = '(No URL)' if link is None else link.url_or_path 
    print(company_name.ljust(20) + ': ' + url) 
+0

skąd mogę pobrać wersję xlrd 0.7.2? –

+0

@ Adamari Adnan Sprawdziłem wersję rozwojową z 'svn co https: // secure.simplistix.co.uk/svn/xlrd/trunk /'. Wygląda na to, że 0.7.2 nie jest jeszcze wydany. – phihag

+0

ok, zrobiłem to z svn, bardzo dziękuję za pomoc. –

Powiązane problemy