LinqToExcel获取超链接值

时间:2017-07-20 20:09:23

标签: c# excel linq-to-excel

我正在使用LinqToExcel来读取excel文件。一切正常,但是单元格的内容是超链接,我只获得超链接文本。我想获得它的URL /电子邮件。

try
{
    // Connection to the DB
    iRentDB db = new iRentDB();

    // Get excel file and work sheet
    string pathToExcelFile = @"Members_Export_1500068180.xls";
    string sheetName = "Members_Export_1500068180";

    var excelFile = new LinqToExcel.ExcelQueryFactory(pathToExcelFile);

    // Select all rows from Excel
    var rows = from c in excelFile.WorksheetNoHeader(sheetName)
               select c;
    foreach (var row in rows)
    {
        // Get and validate the email
        var email = row[8].Value.ToString();
    }
}catch (Exception any)
{
    Console.Write(any.ToString());
}

我正在阅读的单元格是一个超链接。单元格内容名称为“电子邮件”,超链接值为test@test.com。 在我的C#代码中,变量email =“Email”。如何设置变量电子邮件的超链接值(“test@test.com”)?

由于

1 个答案:

答案 0 :(得分:1)

以编程方式向工作表添加内容时,Excel应用程序不会自动编辑要格式化的单元格并添加超链接(就像您手动键入单元格一样)。

我不确定 LinqToExcel 是否有添加超链接的选项,但您可以考虑使用EPPlus,这里是链接: How to create a link inside a cell using EPPlus

使用EPPlus,您几乎可以使用Excel进行任何操作,就像使用Microsoft.Office.Interop.Excel一样,它主要用于桌面应用程序(使用Interop的示例):

    Excel.Worksheet ws;        
    ws.Hyperlinks.Add(ws.Cells[5,8], "test@test.com");
    ws.Hyperlinks.Add(ws.Range["B4"], "test2@anothertest.com");

我知道这不是你要找的答案,但我的观点是超链接不会自动添加。