EPPluse 复杂超链接崩溃 excel 文件

EPPluse complex hyperlink crashing excel file

我正在使用 eppluse 库在 C# 中创建报告。
报告包含数百万个 url,我必须将其显示为超链接/可点击链接。
目前,一切正常,但某些 URL 破坏了我的 Reports.xlsx 文件。 Error Snap in excel

代码示例:

for (var j = 0; j < values.Length; j++)
{
    // Format values before printing
    object cellValue = ParseString(values[j].Replace("\"", ""));

    // Check for urls and conver to hyperlinks
    if (cellValue.GetType().Name.ToLower() == "uri")
    {
        worksheet.Cells[i + 1, j + 1].Hyperlink = new ExcelHyperLink(Uri.EscapeUriString(cellValue.ToString().Replace("[", "%5B").Replace("]", "%5D"))) { Display = "Link" };
        worksheet.Cells[i + 1, j + 1].StyleName = hyperLinkStyle.Name;
    }
    else
    {
        worksheet.Cells[i + 1, j + 1].Value = cellValue;
    }
}

我运行你的代码。没有什么问题。但幸运的是,我在下面的测试代码片段中犯了一个小错误。就像现在一样,它为 sheet 中的每个填充单元格创建了一个超链接。

for (int col = 1; col <= ws.Dimension.End.Column; col++)
{
    ws.Column(col).Width = ws.Column(col).Width + 1;

    for (var j = 1; j <= ws.Dimension.End.Row; j++)
    {
        ws.Cells[col, j].Hyperlink = new ExcelHyperLink(Uri.EscapeUriString("http://www.google.nl".Replace("[", "%5B").Replace("]", "%5D"))) { Display = "Link" };
    }
}

但我第一次 运行 那个带有以下 Cells[col + 1, j + 1] 的片段。这创建了一个完全填充的 excel sheet 因为在循环中它每次都移动 Dimension.End 。但是当 sheet 已满时,它确实会产生与您相同的错误。 sheet 已损坏。

总之,似乎 Excel 或 EPPlus 无法处理超过一定数量的超链接...

感谢您帮助解决目前有效的问题。
我不确定它能工作多久,但目前工作顺利。

string url = Uri.EscapeUriString(cellValue.ToString().Replace("[", "%5B").Replace("]", "%5D"));
        if (cellValue.ToString().Length < 256)
        {
            worksheet.Cells[i + 1, j + 1].Formula = string.Format("HYPERLINK(\"{0}\",\"{1}\")", url, "Link");
        }
        else
        {
            worksheet.Cells[i + 1, j + 1].Hyperlink = new ExcelHyperLink(url) { Display = "Link" };
        }