使用NPOI将超级链接从单元格复制到另一个单元格

时间:2016-10-09 14:21:39

标签: c# .net excel hyperlink npoi

我正在尝试将某些数据从工作表复制到另一个工作表,但有些单元格是简单的字符串,有些是超链接。 如果我在字符串上使用StringCellValue就可以了,但我还没有找到一种方法将原始工作表中的超链接复制到我正在构建的新工作表中。

为了构建新工作表和数据复制,我使用的是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 个答案:

答案 0 :(得分:2)

您可以复制这样的超链接,其中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;
    }