PythonでExcelワークシートにハイパーリンクを追加、変更、削除する

**Excel**ブックを作成する際、ドキュメント内のリンクや、レポートの自動生成、外部リソースへの迅速なアクセスパスを作成することがよくあります。**ハイパーリンク**を使用することで、ワークシートと外部リソース、ファイル、またはウェブページをシームレスに接続し、データのインタラクティブ性や可読性を向上させることができます。迅速なナビゲーション、動的なコンテンツ更新、複数のデータソースの統合を目的とした場合でも、ハイパーリンクの自動管理を習得することは非常に重要です。**Python**を使うことで、ハイパーリンクの追加、変更、削除を簡単に一括処理でき、効率を大幅に向上させ、手作業のミスを減らすことができます。

本記事では、**Pythonを使用してExcelワークシート内のハイパーリンクを追加、変更、削除する方法**をご紹介します。

- **[PythonでExcelワークシート内のテキストにハイパーリンクを挿入](#pythonでexcelワークシート内のテキストにハイパーリンクを挿入)**
- **[PythonでExcelワークシート内の画像にハイパーリンクを挿入](#pythonでexcelワークシート内の画像にハイパーリンクを挿入)**
- **[PythonでExcelワークシート内のハイパーリンクを変更](#pythonでexcelワークシート内のハイパーリンクを変更)**
- **[PythonでExcelワークシート内のハイパーリンクを削除](#pythonでexcelワークシート内のハイパーリンクを削除)**

この記事で使用する方法には、[Spire.XLS for Python](https://jp.e-iceblue.com/introduce/spire-xls-for-python.html)が必要です。PyPIからインストールします：`pip install spire.xls`。

[無料ライセンスの申請](https://www.e-iceblue.com/TemLicense.html)

## PythonでExcelワークシート内のテキストにハイパーリンクを挿入
Excelワークシート内にテキストハイパーリンクを追加するには、セルを基準とするのが一般的です。特定のセルにテキストハイパーリンクを追加すると、セル内のすべてのテキストや数値がハイパーリンクの一部として機能します。Spire.XLSの`Worksheet.Hyperlinks.Add(cell: CellRange)`メソッドを使用して、指定したセルにテキストハイパーリンクを追加し、`Hyperlink`クラスのプロパティを通じてリンクの種類やリンク先を設定できます。以下は、ウェブページ、メール、外部ドキュメント、ドキュメント内の位置、およびUNCパスへのハイパーリンクをExcelセルに挿入する手順です：
1. 必要なモジュールをインポート：`Workbook`、`HyperlinkType`、`FileFormat`。
2. `Workbook`インスタンスを作成。
3. `Workbook.Worksheets.get_Item()`メソッドを使ってワークシートを取得。
4. `Worksheet.Range[]`プロパティを使ってセルを取得。
5. `Worksheet.Hyperlinks.Add(cell: CellRange)`メソッドを使ってセルにハイパーリンクを挿入。
6. `Hyperlink.Type`プロパティを使ってハイパーリンクの種類を設定。
7. `Hyperlink.Address`でリンク先を設定。
8. `Hyperlink.TextToDisplay`で表示テキストを設定。
9. `Workbook.SaveToFile()`メソッドを使用してブックを保存。
10. リソースを解放。

**コード例**
```python
from spire.xls import Workbook, HyperLinkType, FileFormat

# Workbookインスタンスを作成
workbook = Workbook()

# 最初のワークシートを取得
sheet = workbook.Worksheets.get_Item(0)

# ウェブページのハイパーリンクを追加
cell1 = sheet.Range[2, 2]
webLink = sheet.HyperLinks.Add(cell1)
webLink.Type = HyperLinkType.Url
webLink.TextToDisplay = "ウェブページのハイパーリンク"
webLink.Address = "https://www.google.com"

# メールアドレスのハイパーリンクを追加
cell2 = sheet.Range[4, 2]
emailLink = sheet.HyperLinks.Add(cell2)
emailLink.Type = HyperLinkType.Url
emailLink.TextToDisplay = "メールアドレスのハイパーリンク"
emailLink.Address = "mailto:example@example.com"

# 外部ファイルのハイパーリンクを追加
cell3 = sheet.Range[6, 2]
fileLink = sheet.HyperLinks.Add(cell3)
fileLink.Type = HyperLinkType.File
fileLink.TextToDisplay = "外部ファイルのハイパーリンク"
fileLink.Address = "C:\\Users\\Public\\Documents\\Example.pdf"

# ドキュメント内部のハイパーリンクを追加
cell4 = sheet.Range[8, 2]
internalLink = sheet.HyperLinks.Add(cell4)
internalLink.Type = HyperLinkType.Workbook
internalLink.TextToDisplay = "ドキュメント内部のハイパーリンク"
internalLink.Address = "Sheet2!A1"

# UNCパスのハイパーリンクを追加
cell5 = sheet.Range[10, 2]
uncLink = sheet.HyperLinks.Add(cell5)
uncLink.Type = HyperLinkType.Unc
uncLink.TextToDisplay = "UNCパスのハイパーリンク"
uncLink.Address = "\\\\server\\share\\file.txt"

# フォントを設定し、列幅を自動調整
sheet.Range.Style.Font.FontName = "Arial"
sheet.Range.Style.Font.Size = 14
for i in range(sheet.Range.ColumnCount):
    sheet.AutoFitColumn(i + 1)

# ワークブックを保存
workbook.SaveToFile("output/TextHyperlinkExcel.xlsx", FileFormat.Version2016)
workbook.Dispose()
```
結果
![PythonでExcelワークシートにハイパーリンクを挿入](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/278784/f6b4b3d2-b1c8-1780-c73d-9c2e008eee27.png)

## PythonでExcelワークシート内の画像にハイパーリンクを挿入
ワークシート内の画像にハイパーリンクを挿入するには、まず`Worksheet.Pictures.Add()`メソッドを使用して画像を挿入し、次に`ExcelPicture.SetHyperLink(linkString: str, isExternal: bool)`メソッドを使用して画像にハイパーリンクを挿入します。以下は操作手順の例です：
1. 必要なモジュールをインポート：`Workbook`、`FileFormat`。
2. `Workbook`インスタンスを作成。
3. `Workbook.Worksheets.get_Item()`メソッドを使ってワークシートを取得。
4. `Worksheet.Pictures.Add()`を使って指定位置に画像を追加。
5. `ExcelPicture.SetHyperLink()`メソッドを使って画像にハイパーリンクを追加。
6. `Workbook.SaveToFile()`メソッドを使ってブックを保存。
7. リソースを解放。

**コード例**
```python
from spire.xls import Workbook, FileFormat

# Workbookインスタンスを作成
workbook = Workbook()

# 最初の既定ワークシートを取得
sheet = workbook.Worksheets.get_Item(0)

# 指定位置に画像を追加
picture = sheet.Pictures.Add(3, 2, "image1.jpg")

# 画像にハイパーリンクを追加
picture.SetHyperLink("https://www.bing.com/", True)

# ワークブックを保存
workbook.SaveToFile("output/PictureHyperlinkExcel.xlsx", FileFormat.Version2016)
workbook.Dispose()
```

結果
![PythonでExcelワークシート内の画像にハイパーリンクを挿入](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/278784/0e8e1700-6182-f57d-9730-02e3438fc586.png)

## PythonでExcelワークシート内のハイパーリンクを変更
`CellRange.Hyperlinks.get_Item(0)`メソッドを使って、セルから指定のハイパーリンクを直接取得するか、`Worksheet.Hyperlinks.get_Item()`メソッドを使用してワークシート内のハイパーリンクコレクションから取得することができます。その後、`Hyperlink`クラスのプロパティを使用して、リンクの種類、アドレス、および表示テキストを変更できます。操作手順は以下の通りです：
1. 必要なモジュールをインポート：`Workbook`、`FileFormat`。
2. `Workbook`インスタンスを作成。
3. `Workbook.Worksheets.get_Item()`メソッドを使ってワークシートを取得。
4. `Worksheet.Range[]`プロパティでセルを取得し、`CellRange.Hyperlinks.get_Item(0)`メソッドでハイパーリンクを取得するか、`Worksheet.Hyperlinks.get_Item()`メソッドを使ってワークシート内のハイパーリンクコレクションから取得。
5. `Hyperlink.Type`プロパティを使ってリンクの種類を変更し、`Hyperlink.Address`でリンク先アドレスを変更、`Hyperlink.TextToDisplay`で表示テキストを変更。
6. `Workbook.SaveToFile()`メソッドを使ってブックを保存。
7. リソースを解放。

**コード例**
```python
from spire.xls import Workbook, HyperLinkType

# Workbookインスタンスを作成
workbook = Workbook()

# Excelファイルをロード
workbook.LoadFromFile("output/TextHyperlinkExcel.xlsx")

# 最初のワークシートを取得
sheet = workbook.Worksheets.get_Item(0)

# セルを取得し、そのハイパーリンクを取得
cell = sheet.Range[2, 2]
hyperlink = cell.Hyperlinks.get_Item(0)

# ワークシートのハイパーリンクコレクションから直接ハイパーリンクを取得することも可能
# hyperlink = sheet.HyperLinks.get_Item(0)

# ハイパーリンクのタイプ、アドレス、表示テキストを変更
hyperlink.Type = HyperLinkType.File
hyperlink.Address = "C:\\Documents\\Document.pdf"
hyperlink.TextToDisplay = "サンプルドキュメント"

# ファイルを保存
workbook.SaveToFile("output/ModifyHyperlinkExcel.xlsx")
workbook.Dispose()
```

結果
![PythonでExcelワークシート内のハイパーリンクを変更](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/278784/18769519-a64c-3189-6667-978181e3465f.png)

## PythonでExcelワークシート内のハイパーリンクを削除
`Worksheet.Hyperlinks.RemoveAt()`メソッドを使って、ワークシート内の指定したハイパーリンクを削除するか、`Worksheet.Hyperlinks.Clear()`メソッドでワークシート内のすべてのハイパーリンクを削除できます。操作手順の例は以下の通りです：
1. 必要なモジュールをインポート：`Workbook`、`FileFormat`。
2. `Workbook`インスタンスを作成。
3. `Workbook.Worksheets.get_Item()`メソッドを使ってワークシートを取得。
4. `Worksheet.Hyperlinks.RemoveAt()`メソッドを使って、ワークシート内の指定したハイパーリンクを削除、または`Worksheet.Hyperlinks.Clear()`メソッドを使ってすべてのハイパーリンクを削除。
5. `Workbook.SaveToFile()`メソッドを使ってブックを保存。
6. リソースを解放。

**コード例**
```python
from spire.xls import Workbook

# Workbookインスタンスを作成
workbook = Workbook()

# Excelファイルをロード
workbook.LoadFromFile("output/TextHyperlinkExcel.xlsx")

# 最初のワークシートを取得
sheet = workbook.Worksheets.get_Item(0)

# 最初のハイパーリンクを削除
sheet.HyperLinks.RemoveAt(1)

# すべてのハイパーリンクを削除
# sheet.HyperLinks.Clear()

# ワークブックを保存
workbook.SaveToFile("output/RemoveHyperlinkExcel.xlsx")
workbook.Dispose()
```

結果
![PythonでExcelワークシート内のハイパーリンクを削除](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/278784/a3b2de18-f4de-4334-f547-9084b5788fa7.png)

本記事では、Pythonを使用してExcelワークシート内のハイパーリンクを挿入、変更、削除する方法を説明しました。