worksheet.hyperlink【ハイパーリンク】モジュール
メモ ( 概要 ハイパーリンクの設定・解除 ) Hyperlink【ハイパーリンク】クラス HyperlinkList【ハイパーリンク リスト】クラス 例
メモ
概要
- Cell【セル】のハイパーリンクに関連するモジュール
- Excel の [挿入] - [リンク]タブ - [ハイパーリンク] に対応
- Excel の [挿入] - [リンク]タブ - [ハイパーリンク] に対応
- モジュール内定義
ハイパーリンクの設定・解除
〔 例 〕- Cell【セル】 の hyperlink【ハイパーリンク】プロパティを使用
- Hyperlink【ハイパーリンク】クラスのプロパティ も参照
- 代替として HYPERLINK 関数も可 (詳細は省略)
- ハイパーリンクの設定 (設定処理は特殊)
- Cell【セル】 の hyperlink【ハイパーリンク】プロパティ に リンク先ドキュメント(文字列)を設定
(同一ドキュメントの場合は空文字列を指定) - 自動的に Hyperlink【ハイパーリンク】生成 (下記プロパティ自動設定)
target【リンク先ドキュメント】:リンク先ドキュメント
ref【設定対象セルアドレス】:自セルアドレス
Cell【セル】の value【値】プロパティ: 未設定の場合、リンク先ドキュメント - 以降、Hyperlink のプロパティ設定可
- 注) セル移動には未対応の為、直接的・間接的なセル移動の後に設定
- Cell【セル】 の hyperlink【ハイパーリンク】プロパティ に リンク先ドキュメント(文字列)を設定
- その他設定
- Cell【セル】の value【値】プロパティ :表示文字列を指定 (ハイパーリンクの設定前でも可)
- location【ドキュメント内リンク】
- tooltip【ヒント (ツールチップ)】
- 下線:自動的に設定されないので指定 (styles.fonts【フォント】モジュール 参照)
- ハイパーリンクの解除
- Cell【セル】 の hyperlink【ハイパーリンク】プロパティに None を設定
- 下線解除:フォントをデフォルト値等に設定
外部リンク
- openpyxl (英語)
- ECMA-376:Office Open XML file formats (英語)
SpreadsheetML:- hyperlink (Hyperlink)
- hyperlinks (Hyperlinks)
- Microsoft office のサポート
Hyperlink【ハイパーリンク】クラス
メモ
- Cell【セル】 の hyperlink【ハイパーリンク】プロパティ で使用
- ハイパーリンクの設定・解除 を参照
クラス定義
クラス | 備考 |
---|---|
親:openpyxl.descriptors.serialisable.Serialisable | |
class Hyperlink( ref=None, location=None, tooltip=None, display=None, id=None, target=None) | ハイパーリンク ref (str)設定対象セルアドレス location (str)ドキュメント内リンク tooltip (str)ヒント (ツールチップ) display (str)表示文字列 idId target (str)リンク先 ※ 通常、自動生成 |
プロパティ
プロパティ | 型 | 備考 |
---|---|---|
display | str | 表示文字列 (内部使用) ※ 表示文字列は、 Cell【セル】 の value【値】プロパティ 使用 |
id | Relation | Id (内部使用) |
location | str | ドキュメント内リンク (例) Excel: シート名!セルアドレス (シート名が空白を含む場合は、シングルクォートで囲む) 名前定義 (workbook.defined_name【名前定義】モジュール 参照) Word:ブックマーク Web ページ:タグのId |
ref | str | 設定対象セルアドレス ※ ハイパーリンクの設定・解除 では自動設定 |
tagname | str | タグ名 ('hyperlink') |
target | str | リンク先ドキュメント (相対パス・絶対パス 可) ※ ハイパーリンクの設定・解除 も参照 ※ 末尾に '#' と location【ドキュメント内リンク】の指定可 (但し、絶対パス指定に不備あり) (例) なし:現在のドキュメント Excel:Excel ファイル名 Word:Word ファイル名 Web ページ:Web ページ URL メーラー起動:mailto:メールアドレス?subject=件名 その他:フォルダ名・テキストファイル名 等 |
tooltip | str | ヒント (ツールチップ) (改行:'\n') |
HyperlinkList【ハイパーリンク リスト】クラス
メモ
- 内部使用
クラス定義
クラス | 備考 |
---|---|
親:openpyxl.descriptors.serialisable.Serialisable | |
class HyperlinkList( hyperlink=() ) | ハイパーリンク リスト hyperlinkHyperlink のシーケンス |
操作
操作 | 備考 |
---|---|
bool(HyperlinkList) ブール演算 | |
len(HyperlinkList) |
プロパティ
プロパティ | 型 | 備考 |
---|---|---|
hyperlink | list tuple | Hyperlink のシーケンス |
tagname | str | タグ名 ('hyperlinks') |
メソッド
メソッド | 備考 |
---|---|
append( value) | value |
例
ハイパーリンクの設定・解除
from openpyxl import Workbook
from openpyxl.styles import Font, Color
# ハイパーリンク設定
def set_hyperlink(
cell, # Cell【セル】
target='', # リンク先ドキュメント
location=None, # ドキュメント内リンク
text=None, # 表示文字列
tooltip=None, # ヒント (ツールチップ)
underline=True, # 下線等指定有無
):
# 表示文字列
if text is not None:
cell.value = text
else:
value = target
if location is not None:
value += '#' + location
cell.value = value
# リンク先ドキュメント
cell.hyperlink = target
# ドキュメント内リンク
if location is not None:
cell.hyperlink.location = location
# ヒント (ツールチップ)
if tooltip is not None:
cell.hyperlink.tooltip = tooltip
# 下線等指定
if underline:
font = Font(
color=Color(theme=10), # Hyperlink
underline=Font.UNDERLINE_SINGLE,
# name='~',
# size=n,
)
cell.font = font
# ワークブック作成
WORKBOOK = 'sample.xlsx'
wb = Workbook()
ws = wb.active
ws.title = 'SheetX'
ws.column_dimensions['B'].width = 30
wb.create_sheet('Sheet SP')
# 単一セルへ (同一ブック・同一シート)
ws['B2'] = '単一セルへ'
cell = ws['B3']
cell.value = 'D3 へ (表示文字列)'
print(cell.hyperlink) # 指定前
# 出力:None
cell.hyperlink = '' # リンク先ドキュメント (同一ブック)
cell.hyperlink.location = 'SheetX!D3' # ドキュメント内リンク
print(cell.hyperlink) # 指定後 (自動生成)
# 出力:
# <openpyxl.worksheet.hyperlink.Hyperlink object>
# Parameters:
# ref='B3', location='SheetX!D3', tooltip=None, display=None, id=None
# 各種 指定
set_hyperlink(
ws['B4'],
'',
'SheetX!D4',
'D4 へ',
'TOOLTIP:B4',
)
# 複数セルへ (同一ブック・同一シート)
ws['B6'] = '複数セルへ'
set_hyperlink(
ws['B7'],
'',
'SheetX!D3:F5',
'D3:F5へ',
'TOOLTIP:B7',
)
# 名前定義
NAME_TARGET_1 = 'target_1'
NAME_TARGET_2 = 'target_2'
wb.create_named_range(
NAME_TARGET_1,
value='SheetX!$D$3, SheetX!$E$4, SheetX!$F$5:$G$6',
)
wb.create_named_range(
NAME_TARGET_2,
value="'Sheet SP'!$D$3, 'Sheet SP'!$E$4",
)
# 名前定義セルへ (同一ブック)
ws['B9'] = '名前定義セルへ'
set_hyperlink(
ws['B10'],
'',
f'{NAME_TARGET_1}',
f'{NAME_TARGET_1} へ',
'TOOLTIP:B10',
)
set_hyperlink(
ws['B11'],
'',
f'{NAME_TARGET_2}',
f'{NAME_TARGET_2} へ (別シート)',
'TOOLTIP:B11',
)
# 別シートへ (同一ブック)
ws['B13'] = '別シートへ'
set_hyperlink(
ws['B14'],
'',
"'Sheet SP'!D3:F5",
'[Sheet SP] の D3:F5へ',
'TOOLTIP:B14',
)
# 別ブックへ
ws['B16'] = '別ブックへ'
set_hyperlink(
ws['B17'],
'sample-2.xlsx',
'Sheet1!B2',
'[sample-2.xlsx]-[Sheet1] の B2へ',
'TOOLTIP:B17',
)
set_hyperlink(
ws['B18'],
'sample SP.xlsx',
'Sheet1!B2',
'[sample SP.xlsx]-[Sheet1] の B2へ',
'TOOLTIP:B18',
)
# 各種ファイル
ws['B20'] = '各種ファイルへ'
set_hyperlink(
ws['B21'],
'sample.docx',
tooltip='TOOLTIP:B21',
)
set_hyperlink(
ws['B22'],
'sample.docx',
'BookMark_1',
tooltip='TOOLTIP:B22',
)
set_hyperlink(
ws['B23'],
'sample.txt',
tooltip='TOOLTIP:B23',
)
# Web ページ
ws['B25'] = 'Web ページへ'
set_hyperlink(
ws['B26'],
'https://cercopes-z.com/',
None,
'リファレンス メモ へ',
'TOOLTIP:B26',
)
set_hyperlink(
ws['B27'],
'https://cercopes-z.com/Python/openpyxl/index-opxl.html',
'basic-class',
'Web ページ 指定id へ',
'TOOLTIP:B27',
)
set_hyperlink( # 解除用
ws['B28'],
'https://cercopes-z.com/',
text='リファレンス メモ へ',
)
# ハイパーリンクの解除
ws['B28'].value += ' (解除)'
ws['B28'].hyperlink = None
ws['B28'].font = None
# メーラー起動
ws['B30'] = 'メーラー起動'
set_hyperlink(
ws['B31'],
'mailto:メールアドレス?subject=件名',
tooltip='TOOLTIP:B31',
)
# ワークブック保存
wb.save(WORKBOOK)