Отдельный URL и данные для поля excel style = HYPERLINK - PullRequest
0 голосов
/ 19 февраля 2020

У меня есть CSV-файл, который содержит поле, предназначенное для обеспечения обратной ссылки при импорте в Excel. Пример содержимого:

"= HYPERLINK (" "https://app.redflagalert.net/search/company/00975699/" "," "CHILTERN HILLS MINERAL WATER LIMITED" ")"

Есть ли способ в CsvHelper разделить это поле на два отдельных значения?

1 Ответ

1 голос
/ 19 февраля 2020

Это должно как минимум дать вам хорошее представление о том, как вы могли бы это сделать.

public class Program
{
    public static void Main(string[] args)
    {
        using (MemoryStream stream = new MemoryStream())
        using (StreamWriter writer = new StreamWriter(stream))
        using (StreamReader reader = new StreamReader(stream))
        using (CsvReader csv = new CsvReader(reader, CultureInfo.InvariantCulture))
        {
            writer.WriteLine("Id,Company");
            writer.WriteLine("1,\"=HYPERLINK(\"\"https://app.redflagalert.net/search/company/00975699/\"\",\"\"CHILTERN HILLS MINERAL WATER LIMITED\"\")\"");
            writer.Flush();
            stream.Position = 0;

            csv.Configuration.RegisterClassMap<FooClassMap>();

            var records = csv.GetRecords<Foo>().ToList();
        }

        Console.ReadKey();
    }
}

public class FooClassMap : ClassMap<Foo>
{
    public FooClassMap()
    {
        Map(m => m.Id);
        Map(m => m.CompanyLink).ConvertUsing(row => row[1].Split(',')[0]);
        Map(m => m.Company).ConvertUsing(row => row[1].Split(',')[1]);
    }
}

public class Foo
{
    public int Id { get; set; }
    public string CompanyLink { get; set; }
    public string Company { get; set; }
}
...