12,964
回編集
867行目: | 867行目: | ||
<br> | <br> | ||
<u>OpenXML SDKを使用する場合は、より低レベルでのストリーミングに近い処理が可能であるが、実装が複雑になる。</u><br> | <u>OpenXML SDKを使用する場合は、より低レベルでのストリーミングに近い処理が可能であるが、実装が複雑になる。</u><br> | ||
<br><br> | |||
== ハイパーリンクの挿入と管理 == | |||
以下の例では、ハイパーリンクの挿入と管理を行っている。<br> | |||
A1セルには外部リンク (Google)、A2セルには内部リンク (B5セル) が設定される。<br> | |||
また、プログラム内でA1セルのリンクを変更して、A2セルのリンクを削除している。<br> | |||
<br> | |||
* 外部ハイパーリンクの挿入 | |||
*: worksheet.Cell("A1").Valueでセルにリンク名を指定する。 | |||
*: worksheet.Cell("A1").Hyperlinkオブジェクトに、XLHyperlinkオブジェクトを割り当てて、外部リンクを指定する。 | |||
*: <br> | |||
* 内部ハイパーリンク (ワークシート内のセル参照) の作成 | |||
*: worksheet.Cell("A2").Hyperlinkオブジェクトに、XLHyperlinkオブジェクトを割り当てて、セル参照を文字列で指定する。 | |||
*: <br> | |||
* ハイパーリンクの取得と変更 | |||
*: worksheet.Cell("A1").Hyperlinkオブジェクトでリンクオブジェクトを取得する。 | |||
*: link.ExternalAddressプロパティでリンク先のURLを取得または変更できる。 | |||
*: <br> | |||
* ハイパーリンクの削除 | |||
*: セルのHyperlinkオブジェクトにnullを代入することにより、リンクを削除することができる。 | |||
<br> | |||
<syntaxhighlight lang="c#"> | |||
using System; | |||
using System.IO; | |||
using ClosedXML.Excel; | |||
class Program | |||
{ | |||
static void Main(string[] args) | |||
{ | |||
try | |||
{ | |||
// 新しいワークブックを作成 | |||
using (var workbook = new XLWorkbook()) | |||
{ | |||
// ワークシートを追加 | |||
var worksheet = workbook.Worksheets.Add("ハイパーリンクサンプル"); | |||
// 2つ目のワークシートを追加 (絶対参照リンクで使用) | |||
var secondWorksheet = workbook.Worksheets.Add("第2シート"); | |||
secondWorksheet.Cell("A1").Value = "これは第2シートである"; | |||
try | |||
{ | |||
// セルにハイパーリンクを挿入 | |||
worksheet.Cell("A1").Value = "Googleへのリンク"; | |||
worksheet.Cell("A1").Hyperlink = new XLHyperlink("https://www.google.com"); | |||
// 別のセルへの内部リンクを作成 | |||
worksheet.Cell("A2").Value = "B5セルへのリンク"; | |||
worksheet.Cell("A2").Hyperlink = new XLHyperlink("B5"); | |||
worksheet.Cell("B5").Value = "ここにリンクされています"; | |||
// 別シートへの絶対参照を含むハイパーリンクを作成 | |||
worksheet.Cell("A3").Value = "第2シートのA1セルへのリンク"; | |||
worksheet.Cell("A3").Hyperlink = new XLHyperlink("'第2シート'!A1"); | |||
// 別シートへの絶対参照リンクの確認 | |||
var sheetLink = worksheet.Cell("A3").Hyperlink; | |||
if (sheetLink != null) | |||
{ | |||
Console.WriteLine($"A3のリンク先: {sheetLink.InternalAddress}"); | |||
// 第2シートの内容を確認 | |||
Console.WriteLine($"第2シートのA1セルの値: {secondWorksheet.Cell("A1").Value}"); | |||
} | |||
else | |||
{ | |||
Console.WriteLine("警告: A3セルにハイパーリンクが見つかりません"); | |||
} | |||
// ハイパーリンクの取得と変更 | |||
var link = worksheet.Cell("A1").Hyperlink; | |||
if (link != null) | |||
{ | |||
Console.WriteLine($"A1のリンク先: {link.ExternalAddress}"); | |||
// リンクを変更 | |||
link.ExternalAddress = new Uri("https://www.example.com"); | |||
} | |||
else | |||
{ | |||
Console.WriteLine("警告: A1セルにハイパーリンクが見つかりません。"); | |||
} | |||
// ハイパーリンクの削除 | |||
worksheet.Cell("A2").Hyperlink = null; | |||
} | |||
catch (Exception ex) | |||
{ | |||
Console.WriteLine($"エラー: ワークシートの操作中に問題が発生 詳細: {ex.Message}"); | |||
} | |||
try | |||
{ | |||
// ファイルを保存 | |||
string filePath = "ハイパーリンクサンプル.xlsx"; | |||
workbook.SaveAs(filePath); | |||
Console.WriteLine($"Excelファイルが正常に作成: {filePath}"); | |||
} | |||
catch (IOException ioEx) | |||
{ | |||
Console.WriteLine($"エラー: ファイルの保存中にIOエラーが発生 詳細: {ioEx.Message}"); | |||
} | |||
catch (Exception ex) | |||
{ | |||
Console.WriteLine($"エラー: ファイルの保存中に予期せぬエラーが発生 詳細: {ex.Message}"); | |||
} | |||
} | |||
} | |||
catch (Exception ex) | |||
{ | |||
Console.WriteLine($"致命的なエラー: プログラムの実行中に予期せぬエラーが発生しました。詳細: {ex.Message}"); | |||
} | |||
} | |||
} | |||
</syntaxhighlight> | |||
<br><br> | <br><br> | ||