2017-01-24 58 views
1

私は、生成されたExcelファイルに別のリストへのハイパーリンクを追加することに苦労しています。開口部はエクセル365(フルオフラインアプリケーション)でファイルをエクセルに生成した後、私はちょうどそこにエラーがファイル内にあると、私はこのハイパーリンクの数式を使用するすべてのセルが空であることをメッセージが表示されますEPPlus別のシートのセルへのハイパーリンク

ws.Cells[1, 1].Formula="HYPERLINK(\"[#]'sheetName'!R4C1\";\"linktext\")" 
ws.Cells[1, 1].Formula="HYPERLINK(\"#'sheetName'!R4C1\";\"linktext\")" 
ws.Cells[1, 1].FormulaR1C1="HYPERLINK(\"[#]'sheetName'!R4C1\";\"linktext\")" 
ws.Cells[1, 1].FormulaR1C1="HYPERLINK(\"#'sheetName'!R4C1\";\"linktext\")" 

:私はこのようにそれを試してみました。

エラーメッセージは次のとおりです。

we found a problem with some content in FILENAME do you want us to try to recover as much as we can 

それを動作させるには?

また、同じ数式を手動でセルに入れても機能します。

完全なコード:

using OfficeOpenXml; 
using System; 
using System.Collections.Generic; 
using System.IO; 
using System.Linq; 
using System.Text; 
using System.Threading.Tasks; 

namespace ExcelHyperlinkTest 
{ 
    class Program 
    { 
     static void Main(string[] args) 
     { 
      MemoryStream excelStream = new MemoryStream(); 
      ExcelPackage excelFile = new ExcelPackage(excelStream); 

      ExcelWorksheet wsSrc = excelFile.Workbook.Worksheets.Add("src"); 
      ExcelWorksheet wsTgt = excelFile.Workbook.Worksheets.Add("tgt"); 

      wsSrc.Cells[1, 1].Formula = string.Format("HYPERLINK(\"#'{0}'!R{1}C{2}\";\"{3}\")", "tgt", 2, 5, "test"); //FormulaR1C1 

      excelFile.Save(); 
      excelStream.Position = 0; 

      using (FileStream file = new FileStream("c:\\linkTest.xlsx", FileMode.Create, System.IO.FileAccess.Write)) 
      { 
       byte[] bytes = new byte[excelStream.Length]; 
       excelStream.Read(bytes, 0, (int)excelStream.Length); 
       file.Write(bytes, 0, bytes.Length); 
       excelStream.Close(); 
      } 
     } 
    } 
} 

答えて

3

これは

wsSrc.Cells[1, 6].Value = "test3"; 
      Uri url = new Uri("#'tgt'!B5", UriKind.Relative); 
      wsSrc.Cells[1, 6].Hyperlink = url; 
の作品
関連する問題