将 URL 和 excel 样式 =HYPERLINK 字段的数据分开
Separate URL and Data for an excel style =HYPERLINK field
我有一个 csv 文件,其中包含一个旨在在导入到 Excel 时提供支持 link 的文件。示例内容为:
"=HYPERLINK(""https://app.redflagalert.net/search/company/00975699/"",""CHILTERN HILLS MINERAL WATER LIMITED"")"
有没有办法在 CsvHelper 中将其分成两个单独的值?
这至少应该让您了解如何做到这一点。
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; }
}
我有一个 csv 文件,其中包含一个旨在在导入到 Excel 时提供支持 link 的文件。示例内容为:
"=HYPERLINK(""https://app.redflagalert.net/search/company/00975699/"",""CHILTERN HILLS MINERAL WATER LIMITED"")"
有没有办法在 CsvHelper 中将其分成两个单独的值?
这至少应该让您了解如何做到这一点。
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; }
}