2017-12-28 28 views
0

一つは、ハイパーリンクSetValueでExcel DNAにハイパーリンクを追加するには?私はExcelに渡す60列の

private object GetApplicationUrl(int id) 
    { 
     var environmentUri = _configurationManager.Default.AppSettings["EnvironmentUri"]; 
     return $"=HYPERLINK(\"{environmentUri}://TradingObject={id}/\", \"{id}\");"; 
    } 

あり、これは外部のプロトコルを解決し、別のアプリケーションで特定の取引を開きます。これは機能しますが、最初はハイパーリンクの式が評価されず、ユーザーは最初に評価する必要があります。私はオブジェクト配列を使用します:

protected void SetRange(object[,] range, int rows, int columns, ExcelCell start = null) 
    { 
     start = start ?? GetCurrentCell(); 
     ExcelAsyncUtil.QueueAsMacro(
     () => 
      { 
      var data = new ExcelReference(start.Row, start.Row + (rows - 1), start.Column, start.Column + (columns - 1)); 
      data.SetValue(range); 
      }); 
    } 

どのように私はそれを評価するように強制できますか?


私はいくつか試みましたが、うまくいかなかった。例:

return XlCall.Excel(
    XlCall.xlcCalculateNow, 
    $"HYPERLINK(\"{environmentUri}://TradingObject={id}/\", \"{id}\")"); 

多分私は間違ったフラグを使用しています。

答えて

0

私はそれを修正するいくつかの方法を見つけましたが、それらのすべてが期待どおりに機能しているわけではありません。要するに、私はセル式の値を代わりに呼び出すことを思いついた。

これはおそらくやや性能が劣りますが、有効な解決策と見なされるほど十分に機能します。

+0

これで、「Microsoft.Office.Interop.Excel」を追加する必要がありました。 – Margus

関連する問題