没有类型的文件助手
本文关键字:文件 类型 | 更新日期: 2023-09-27 18:10:09
有没有办法使用FileHelpers没有类型?我不知道CSV文件里有什么,我只想遍历所有单元格。我只知道第一行将包含列名,其他行将包含值。
感谢编辑:var engine = new DelimitedFileEngine<object>();
但这不起作用,这给了我错误:记录类Object必须用[DelimitedRecord]或[FixedLengthRecord]属性
在版本3中,如果您查看示例,可以让文件帮助器猜测文件布局。您也可以将CSV文件作为数据表读取,但同样需要一个类。所以我的想法是,你需要结合一些技术,阅读第一行来获取标题信息,解析它来计算出有多少列,然后创建一个长度的数组到列字段,并在运行时应用类型属性到类,以便FileHelpers知道该期待什么。我认为这是一个特定的数组属性,但我将不得不更新我的答案以后,一旦我得到我的PC。
class dynamicArray
{
public string[] columns;
}
我还没有看到FileHelpers是否可以利用类型转换器接口,因为如果是这样,你实际上可以创建一个动态对象,而不是基于一个内部字典,它持有的名称,类型和属性的值。
编辑
进一步说,如何使用c#和FileHelpers 3.1中的智能格式检测器动态解析CSV文件?对如何使用智能检测功能有很好的回答。再加上您自己的字典或数据集,这意味着您不需要知道哪些列以什么顺序在哪里。
使用系统。对象作为单元格类型
我最终使用了CsvHelper.
var csv = new CsvReader(new StreamReader(file.InputStream));
csv.Configuration.Delimiter = ";";
while (csv.Read())
{
foreach (string header in csv.FieldHeaders)
{
string field = csv.GetField<string>(header);
}
}