EPPluse复杂的超链接崩溃Excel文件



我正在使用eppluse库在c#中创建报告。
报告包含数百万个 URL,我必须将其显示为超链接/可链接。
目前,一切正常,但某些 URL 正在破坏我的 Reports.xlsx 文件。 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;
}
}

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

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 工作表,因为在循环中它每次都会Dimension.End移动。但是当工作表已满时,它确实会产生与您相同的错误。工作表已损坏。

总之,似乎 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" };
}

相关内容

  • 没有找到相关文章

最新更新