用C#在excel文件中添加多个超链接的优化方法

我想问问是否有一些实际的方法在Excel工作表中添加多个超链接与C#..? 我想要生成一个网站列表和定位到他们的超链接,所以用户可以点击这样的超链接,并到达该网站。 到目前为止,我已经使用了简单的嵌套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方法可以通过一个简单的调用添加数千个string,但是没有类似的方法来添加超链接(Hyperlinks.Add只能添加一个超链接)。

所以我的问题是,有什么办法来优化添加超链接到Excel文件在C#中,当你需要添加大量的超链接…?

任何帮助将是apreciated。

我使用VS2010和MS Excel 2010.我有非常相同的问题(通过Range.Hyperlinks.Add添加300个超链接大约需要2分钟)。

运行时问题是因为有很多Range-Instance。
解:
使用单个范围的实例并添加“= HYPERLINK(target,[friendlyName])”Excel-Formula的超链接。

例:

 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秒…