我需要为导入CSV文件编写代码,而我是使用流读取器读取文件的。编码没问题,它运作良好。但是我在CSV文件中有问题,我需要从Web导入CSV,因为在我读取文件值是3/4/19作为日期格式后,如果没有类似3/4的数字,那会有很多分数。我应该怎么做才能避免这个问题? 由于直接从网络导入文件,因此无法打开每个单元格并对其进行格式化。 注意:有多种值的组合,例如小数部分和名称字符串
答案 0 :(得分:0)
我建议您使用库来实现此目的。 CsvHelper是一个用于读取和写入CSV文件的.NET库。极其快速,灵活且易于使用。也是RFC 4180兼容遵循RFC 4180标准,以确保跨系统的兼容性。
该库的一项出色功能就是可以将CSV文件映射到C#类。
foo <- function(d, long){
nm <- if(!missing(long) & long) "long" else if(!missing(long) & !long) "short" # problematic
out <- data.frame(d)
if(!missing(long))out[nm] <- long ## problematic
return(out)
}
foo(d = 1:3, long = c(T, F,T))
示例CSV:
public class Foo
{
public int Id { get; set; }
public string Name { get; set; }
}
void Main()
{
using (var reader = new StreamReader("path\\to\\file.csv"))
using (var csv = new CsvReader(reader))
{
var records = csv.GetRecords<Foo>();
}
}
它支持许多其他阅读方式,我建议阅读website和小样。
答案 1 :(得分:0)
您也可以使用CSVHelper作为另一个答案中提到的内容。在阅读您的问题时,我了解到问题在于datetime传递了多种格式。
如果这是问题所在,我相信您应该尝试使用多种格式来解析它,例如,此答案https://stackoverflow.com/a/17859959/713789中提到的一种格式
您可能需要编写一个映射器来执行此操作,或者只是简单地编写代码以按照所需的格式读取日期。这必须解决您的问题。