diff --git a/CopyFromExcelToMarkdownAddIn/CopyFromExcelToMarkdownAddIn/ThisAddIn.cs b/CopyFromExcelToMarkdownAddIn/CopyFromExcelToMarkdownAddIn/ThisAddIn.cs index 75926c3..0cb3cd9 100644 --- a/CopyFromExcelToMarkdownAddIn/CopyFromExcelToMarkdownAddIn/ThisAddIn.cs +++ b/CopyFromExcelToMarkdownAddIn/CopyFromExcelToMarkdownAddIn/ThisAddIn.cs @@ -1,5 +1,6 @@ using System; using System.Text; +using System.Text.RegularExpressions; using System.Windows.Forms; using Microsoft.Office.Core; using Microsoft.Office.Interop.Excel; @@ -107,7 +108,14 @@ private void CopyFromMarkdown(CommandBarButton ctrl, ref bool canceldefault) { var cell = row[j]; var activeSheetCell = (Range)activeSheet.Cells[range.Row + i, range.Column + j]; - activeSheetCell.Value2 = cell.Value + var value = cell.Value; + var match = Regex.Match(value, "\\[([^\\]]+)\\]\\(([^\\)]+)\\)"); + if (match.Success) + { + activeSheet.Hyperlinks.Add(activeSheetCell, match.Groups[2].Value); + value = value.Replace(match.Value, match.Groups[1].Value); + } + activeSheetCell.Value2 = value .Replace("
", "\n") .Replace("
", "\n") .Replace("|", "|"); @@ -170,7 +178,15 @@ private void CopyToMarkdown(CommandBarButton ctrl, ref bool cancelDefault) var cell = (Range)range.Cells[1, x]; resultBuffer.Append("|"); - resultBuffer.Append(cell.FormatText()); + if (cell.Hyperlinks.Count > 0) + { + resultBuffer.Append("[").Append(cell.FormatText()).Append("]") + .Append("(").Append(cell.Hyperlinks[1].Address).Append(")"); + } + else + { + resultBuffer.Append(cell.FormatText()); + } switch ((int)cell.HorizontalAlignment) { case AlignmentLeft: @@ -202,7 +218,15 @@ private void CopyToMarkdown(CommandBarButton ctrl, ref bool cancelDefault) var cell = (Range)range.Cells[y, x]; resultBuffer.Append("|"); - resultBuffer.Append(cell.FormatText()); + if (cell.Hyperlinks.Count > 0) + { + resultBuffer.Append("[").Append(cell.FormatText()).Append("]") + .Append("(").Append(cell.Hyperlinks[1].Address).Append(")"); + } + else + { + resultBuffer.Append(cell.FormatText()); + } } resultBuffer.Append("|"); resultBuffer.Append(Environment.NewLine);