2016-10-09 58 views
1

シートから別のデータをコピーしようとしていますが、一部のセルは単純な文字列で、一部はハイパーリンクです。 StringCellValueを文字列に使用しても問題ありませんが、元のシートのハイパーリンクを作成中の新しいシートにコピーするメソッドが見つかりませんでした。NPOIを使用してセルから別のセルにハイパーリンクをコピーする

新しいシートの作成とデータコピー用に私はNPOIを使用しています。

// UPDATE ハイパーリンクを挿入するコードを追加しましたが、プログラムを実行すると、次の例外が表示されます。オブジェクト参照がオブジェクトのインスタンスに設定されていません。ここで

は私のコードです:

using (FileStream fs = new FileStream(@"C:\Users\File.xlsx", FileMode.Open, FileAccess.Read, FileShare.ReadWrite)) 
      { 
       Console.WriteLine("Time to wait...."); 
       templateWorkbook = new XSSFWorkbook(fs); 

      } 
       row.GetCell(6).SetCellValue(sheettoget.GetRow(1).GetCell(13).StringCellValue); 
      var sourceLink = sheettoget.GetRow(1).GetCell(13).Hyperlink; 


        if(sourceLink != null) 
       { 
         Console.WriteLine("Inserting first Juice session..."); 
         var targetLink = new XSSFHyperlink(sourceLink.Type); 

         targetLink.Address = sourceLink.Address; 
         } 

         row.GetCell(6).Hyperlink = targetLink; 
         row.GetCell(6).CellStyle = sheettoget.GetRow(1).GetCell(13).CellStyle; 

答えて

1

あなたはsourceCellはあなたからコピーしている細胞であり、そしてtargetCellは、あなたがコピーしている細胞である。このようなハイパーリンク、コピーすることができます。

targetCell.SetCellValue(sourceCell.StringCellValue); 
    var sourceLink = sourceCell.Hyperlink; 
    if (sourceLink != null) 
    { 
     var targetLink = new XSSFHyperlink(sourceLink.Type); 
     targetLink.Address = sourceLink.Address; 
     targetCell.Hyperlink = targetLink; 

     // also copy the cell style to ensure the copied link still looks like a link 
     targetCell.CellStyle = sourceCell.CellStyle; 
    } 
+0

をちょっと、助けてくれてありがとう:Dしかし、私はこれを得る:オブジェクト参照がオブジェクトのインスタンスに設定されていない –

+0

上記のコードでは、最後の2行は 'if(sourceLink!= null) 'と答えています。その後もNullReferenceExceptionが発生している場合は、エラーの原因となっている行をデバッグして調べる必要があります。あなたがそれを知ったら、ヌルチェックを追加することができます。 [NullReferenceExceptionとは何ですか?どうすれば修正できますか?](http://stackoverflow.com/questions/4660142/what-is-a-nullreferenceexception-and-how-do-i-fix-it) –

関連する問題