我想问是否有一些实用的方法可以使用 C# 在 Excel 工作表中添加多个超链接..?我想生成一个网站列表并锚定它们的超链接,以便用户可以单击此类超链接并访问该网站。
到目前为止,我已经提供了简单的嵌套 for 语句,该语句循环遍历给定 Excel 范围中的每个单元格,并添加到该单元格的超链接:
for (int i = 0; i < _range.Rows.Count; i++)
{
Microsoft.Office.Interop.Excel.Range row = _range.Rows[i];
for (int j = 0; j < row.Cells.Count; j++)
{
Microsoft.Office.Interop.Excel.Range cell = row.Cells[j];
cell.Hyperlinks.Add(cell, adresses[i, j], _optionalValue, _optionalValue, _optionalValue);
}
}
该代码按预期工作,但由于对 Hyperlinks.Add 方法的数千次调用,速度非常慢。
让我感兴趣的一件事是,Office.Interop.Excel 中的 set_Value 方法可以通过一次简单的调用添加数千个字符串,但没有类似的方法用于添加超链接(Hyperlinks.Add 只能添加一个超链接)。
所以我的问题是,当您需要添加大量超链接时,是否有某种方法可以优化在 C# 中向 Excel 文件添加超链接...?
任何帮助,将不胜感激。
我正在使用 VS2010 和 MS Excel 2010。
我有同样的问题(通过 Range.Hyperlinks.Add 添加 300 个超链接大约需要 2 分钟)。
运行时问题是因为有很多范围实例。
解决方案:
使用单个范围实例并使用“=HYPERLINK(target, [friendName])”Excel 公式添加超链接。
Example:
List<string> urlsList = new List<string>();
urlsList.Add("http://www.gin.de");
// ^^ n times ...
// create shaped array with content
object[,] content = new object [urlsList.Count, 1];
foreach(string url in urlsList)
{
content[i, 1] = string.Format("=HYPERLINK(\"{0}\")", url);
}
// get Range
string rangeDescription = string.Format("A1:A{0}", urlsList.Count+1) // excel indexes start by 1
Xl.Range xlRange = worksheet.Range[rangeDescription, XlTools.missing];
// set value finally
xlRange.Value2 = content;
...只需 1 秒...
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)