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

本文关键字:添加 超链接 方法 文件 excel 优化 | 更新日期: 2023-09-27 18:03:48

我想问是否有一些实用的方法在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);
            }
        }

代码按预期工作,但由于成千上万的超链接调用,它非常慢。添加方法。让我感兴趣的一件事是,Office.Interop.Excel中的set_Value方法可以通过一个简单的调用来添加数千个字符串,但是没有类似的方法来添加超链接(hyperlinks)。(可以只添加一个超链接)

所以我的问题是,是否有一些方法来优化添加超链接到excel文件在c#当你需要添加大量的超链接…?

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

我使用VS2010和MS Excel 2010。我有非常相同的问题(通过范围添加300个超链接。2分钟)。

运行时问题是由于许多range - instance。
解决方案:
使用单个范围实例,并使用"=HYPERLINK(target, [friendlyName])"添加超链接excel表达式。

例子:

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;