【问题标题】:Add hyperlink to excel sheet closedxml将超链接添加到 Excel 工作表 closedxml
【发布时间】:2020-10-12 05:58:34
【问题描述】:

我正在将数据表转换为运行良好的 Excel。我在数据表中有 4 列。 Column1 和 Column2 是简单的文本。 Column3 和 Column4 是超链接 url 和显示文本。所有 4 列都以 excel 中的形式导出,代码如下:

        string fileName = ConfigurationManager.AppSettings["filename"];
        string sheetName = System.IO.Path.GetFileNameWithoutExtension(fileName);
        using (XLWorkbook wb = new XLWorkbook())
        {               
            var ws = wb.Worksheets.Add(ptDataTable, sheetName);

            ws.Style.Font.FontName = "Arial";
            ws.Style.Font.FontSize = 10;
            ws.Style.Alignment.WrapText = true;
            ws.FirstRow().Style.Alignment.SetWrapText(true);

            ws.Style.Alignment.SetWrapText(true);
            ws.Style.Alignment.SetShrinkToFit(true);
            ws.Style.Alignment.Vertical = XLAlignmentVerticalValues.Top;
            ws.Style.Alignment.Horizontal = XLAlignmentHorizontalValues.Left;
            ws.Rows().AdjustToContents();
            ws.Columns().AdjustToContents();

            ws.Rows(2,200).Style.Fill.SetBackgroundColor((XLColor.Transparent));
            ws.Columns(9, 10).Width = 50.0;
            ws.Range("A2:J200").Style.Border.SetInsideBorder(XLBorderStyleValues.Thin);
            ws.Range("A2:J200").Style.Border.SetOutsideBorder(XLBorderStyleValues.Thin);


            using (MemoryStream stream = new MemoryStream())
            {
                wb.SaveAs(stream);
                return File(stream.ToArray(), "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet", fileName);
            }
        }

我想用 column3(url) 和 column4(display text) 创建超链接,这个超链接将是导出的 excel 中的 3 列。

任何想法!

【问题讨论】:

    标签: c# excel hyperlink closedxml


    【解决方案1】:

    如果我没记错的话,您的代码使用的是 ClosedXML 库,而不是 OpenXMLSDK。

    OpenXMLSDK中添加超链接有两种方式:

    【讨论】:

      【解决方案2】:

      您必须遍历单元格并手动添加超链接:

      ws.Cell(rowNumber, columnNumber).Hyperlink = new XLHyperlink(@"http://www.yahoo.com");
      

      您可以在 https://github.com/ClosedXML/ClosedXML/wiki/Using-Hyperlinks 找到有关 ClosedXML 中超链接的更多信息

      【讨论】:

      • 我不想循环遍历单元格,因为这会很耗时
      • 如果你想用 ClosedXML 来做,那是你唯一的选择。
      【解决方案3】:

      在@Francois Botha 的早期解决方案的基础上,它不需要太多代码。

      例如在 VB.NET 中,我只是使用以下代码将包含 URL(已经从我的 SQLServer 数据库查询的结果 DataTable 填充)的字符串列转换为可点击的链接:

          For Each wsrow In wc.Rows
              wsrow.Cell("G").Hyperlink = New XLHyperlink(wsrow.Cell("G"))
          Next
      

      更新:不,这似乎有效 - 突出显示的 URL - 但链接内容为空:( 工作一种享受。仅供参考,我使用的是相当旧的 OpenXML 版本,0.68.1。*

      *我昨天尝试升级 ClosedXML,但它破坏了一些重要的现有代码,并且图像显示功能对我不起作用 - 我时间太短,无法进一步处理它。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2015-09-22
        • 1970-01-01
        • 2019-08-16
        • 1970-01-01
        • 2023-03-20
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多