Das Extrahieren Von Hyperlinks Aus Excel - (.xlsx) mit Python
Ich schaue mir meist die xlrd und openpyxl-Bibliotheken für Excel-Datei manipulation. Jedoch, xlrd derzeit nicht unterstützt formatting_info=True
für .xlsx-Dateien, so dass ich nicht verwenden können, die xlrd hyperlink_map
Funktion. So wandte ich mich openpyxl, haben aber auch kein Glück gehabt extrahieren Sie einen hyperlink aus einer excel-Datei. Test code unten (das test-file enthält eine einfache hyperlink zu google mit hyperlink-text auf "test"):
import openpyxl
wb = openpyxl.load_workbook('testFile.xlsx')
ws = wb.get_sheet_by_name('Sheet1')
r = 0
c = 0
print ws.cell(row = r, column = c). value
print ws.cell(row = r, column = c). hyperlink
print ws.cell(row = r, column = c). hyperlink_rel_id
Ausgabe:
test
None
Ich denke, openpyxl derzeit nicht unterstützt Formatierung komplett, oder? Gibt es eine andere Bibliothek, die ich verwenden können, um hyperlink extrahieren von Informationen aus Excel - (.xlsx) - Dateien?
- Openpyxl die Unterstützung für die Formatierung ist jetzt ziemlich komplett. Der Grund hyperlinks sind nicht so gut unterstützt ist historisch, und auch die Art, wie Sie implementiert sind, sind in der Excel-2010-Spezifikation, die viele Umleitung.
- Hier einige weitere experiment mit der Einschränkung der OpenPyXl mit hyperlinks. stackoverflow.com/questions/34964255/...
Du musst angemeldet sein, um einen Kommentar abzugeben.
Meiner Erfahrung immer gut .xlsx-Interaktion erfordert Umzug in IronPython. Dies ermöglicht Ihnen die Arbeit mit der Common Language Runtime (clr) und interagieren direkt mit excel'
http://ironpython.net/
Dies sollte möglich sein, mit openpyxl jetzt:
FYI, das problem mit
openpyxl
ist eine tatsächliche bug.Und, ja,
xlrd
nicht Lesen kann, der hyperlink ohneformatting_info
, die derzeit nicht unterstütztxlsx
.Ab mindestens version openpyxl-2.4.0b1 dieser bug https://bitbucket.org/openpyxl/openpyxl/issue/152/hyperlink-returns-empty-string-instead-of, wurde behoben. Jetzt ist es zurück für die Zelle-Hyperlink-Objekt:
Einer erfolgreichen Lösung, die ich habe mit zu installieren unoconv auf dem server und implementieren
Methode aufruft, die das Kommandozeilen-tool über die Teilprozess - Modul zum konvertieren der Datei von xlsx zu xls-da hyperlink_map.get() arbeitet mit xls.
Für die direkte Bearbeitung von Excel-Dateien es ist auch lohnt ein Blick auf die ausgezeichnete XlWings Bibliothek.
Wenn statt nur .hyperlink, tun .hyperlink.Ziel funktionieren sollte. Ich war immer ein 'None' als auch von der Verwendung nur ".hyperlink" auf das cell-Objekt vor.