17

私は主に、Excel ファイル操作用の xlrd および openpyxl ライブラリを見てきました。ただし、現在 xlrd はformatting_info=True.xlsx ファイルをサポートしていないため、xlrdhyperlink_map関数を使用できません。だから私はopenpyxlに目を向けましたが、それを使ってExcelファイルからハイパーリンクを抽出することもできませんでした. 以下のテスト コード (テスト ファイルには、ハイパーリンク テキストが "test" に設定された google への単純なハイパーリンクが含まれています):

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

出力:

test

None

openpyxl は現在、フォーマットも完全にサポートしていないと思いますか? Excel (.xlsx) ファイルからハイパーリンク情報を抽出するために使用できる他のライブラリはありますか?

4

8 に答える 8

4

少なくともバージョン openpyxl-2.4.0b1 以降、このバグhttps://bitbucket.org/openpyxl/openpyxl/issue/152/hyperlink-returns-empty-string-instead-ofが修正されました。セル Hyperlink オブジェクトに戻ります。

hl_obj = ws.row(col).hyperlink  # getting Hyperlink object for Cell
#hl_obj = ws.cell(row = r, column = c).hyperlink This could be used as well.
if hl_obj:
    print(hl_obj.display)
    print(hl_obj.target)
    print(hl_obj.tooltip) # you can see it when hovering mouse on hyperlink in Excel
    print(hl_obj) # to see other stuff if you need
于 2016-07-11T00:19:59.470 に答える
3

参考までに、問題openpyxlは実際のバグです。

そして、はい、現在サポートされていないxlrdなしではハイパーリンクを読み取ることができません。formatting_infoxlsx

于 2013-05-22T20:35:18.017 に答える
1

私の経験では、.xlsx との適切なやり取りを行うには、IronPython に移行する必要があります。これにより、共通言語ランタイム (clr) を操作し、Excel と直接やり取りできます。

http://ironpython.net/

import clr
clr.AddReference("Microsoft.Office.Interop.Excel")
import Microsoft.Office.Interop.Excel as Excel
excel = Excel.ApplicationClass()

wb = excel.Workbooks.Open('testFile.xlsx')
ws = wb.Worksheets['Sheet1']

address = ws.Cells(row, col).Hyperlinks.Item(1).Address
于 2013-05-21T18:33:17.650 に答える