首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >指向另一个工作表中的单元格的EPPlus超链接

指向另一个工作表中的单元格的EPPlus超链接
EN

Stack Overflow用户
提问于 2017-01-25 07:24:07
回答 3查看 4.7K关注 0票数 2

我正在努力将另一个列表的超链接添加到我生成的excel文件中。我是这样尝试的:

代码语言:javascript
运行
复制
ws.Cells[1, 1].Formula="HYPERLINK(\"[#]'sheetName'!R4C1\";\"linktext\")"
ws.Cells[1, 1].Formula="HYPERLINK(\"#'sheetName'!R4C1\";\"linktext\")"
ws.Cells[1, 1].FormulaR1C1="HYPERLINK(\"[#]'sheetName'!R4C1\";\"linktext\")"
ws.Cells[1, 1].FormulaR1C1="HYPERLINK(\"#'sheetName'!R4C1\";\"linktext\")"

在excel 365 (完全脱机应用程序)中打开生成的excel文件后,我只收到文件中有错误的消息,并且我使用此超链接公式的所有单元格都是空的。

错误消息为:

代码语言:javascript
运行
复制
we found a problem with some content in FILENAME do you want us to try to recover as much as we can

如何让它工作?

此外,当我手动将相同的公式放入单元格时,它也起作用了。

完整代码:

代码语言:javascript
运行
复制
using OfficeOpenXml;
using System;
using System.Collections.Generic;
using System.IO;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace ExcelHyperlinkTest
{
    class Program
    {
        static void Main(string[] args)
        {
            MemoryStream excelStream = new MemoryStream();
            ExcelPackage excelFile = new ExcelPackage(excelStream);

            ExcelWorksheet wsSrc = excelFile.Workbook.Worksheets.Add("src");
            ExcelWorksheet wsTgt = excelFile.Workbook.Worksheets.Add("tgt");

            wsSrc.Cells[1, 1].Formula = string.Format("HYPERLINK(\"#'{0}'!R{1}C{2}\";\"{3}\")", "tgt", 2, 5, "test"); //FormulaR1C1

            excelFile.Save();
            excelStream.Position = 0;

            using (FileStream file = new FileStream("c:\\linkTest.xlsx", FileMode.Create, System.IO.FileAccess.Write))
            {
                byte[] bytes = new byte[excelStream.Length];
                excelStream.Read(bytes, 0, (int)excelStream.Length);
                file.Write(bytes, 0, bytes.Length);
                excelStream.Close();
            }
        }
    }
}
EN

Stack Overflow用户

发布于 2019-08-27 18:11:27

这将链接到工作簿(workbookPath)中工作表(sheetName)中相对于当前工作簿的B5,并将该链接格式化为超链接

代码语言:javascript
运行
复制
using (ExcelRange rng = xlsheetSummary.Cells[1, 1])
{
    var namedStyle = xlsheetSummary.Workbook.Styles.NamedStyles.FirstOrDefault(o=> o.Name == "HyperLink");

    namedStyle.Style.Font.UnderLine = true;
    rng.StyleName = namedStyle.Name;

    rng.Value = ws.Name;
    Uri link = new Uri($"{workbookPath}#'{sheetName}'!B5", UriKind.Relative);
    namedStyle.Style.Font.Color.SetColor(Color.Blue);                                 
    rng.Hyperlink = link;
}
票数 0
EN
查看全部 3 条回答
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/41840784

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档