0

这是我试图从 CSV 导入的数据

Time|Person|Products|Address

(now)|person1|val1*val2*val3|adr1

*换行/回车在哪里

这是我导入它时的样子:

(now)|person1|val1val2val3|adr1 

这是我需要它的样子:

(now)|person1|val1|adr1

(now)|person1|val2|adr1 etc.

我试过:自定义编码一个主要基于的 CSV 解析器string.Spilt(),它给了我确切的结果并且花了很长时间来处理。我已经尝试过 Sebastien Lorion CSVReader,它给了我完全相同的结果,尽管它明显更快更容易插入到我现有的代码中。我什至TextFieldParser用完全相同的结果尝试了 VB。

现在,这就是我想做的事情:

当我到达另一个方法时,以某种方式传递字段的值(我不知道如何引用它们),该方法返回一个List<string>对象,通过该对象我可以迭代并添加到 DataTable 并从那里做需要做的事情。用旧叉子取出我的脑干。在我的呼吸下喃喃自语。

这是 TextFieldParser 代码:

OpenFileDialog op = new OpenFileDialog();
op.ShowDialog();
TextFieldParser parser = new TextFieldParser(new StreamReader(op.FileName));
parser.SetDelimiters(",");

while (!parser.EndOfData)
{
    contents.AddRange(parser.ReadFields());
}
4

2 回答 2

1

在我看来,如果您必须坚持使用这种 CSV 格式,我会像您在上面所做的那样将其全部阅读;但之后,我会遍历您收集的数据,然后手动将产品字符串拆分为您需要的组件。

试图一次完成所有事情会使问题复杂化。

获得单独的课程后,您可以像这样在回车上拆分产品:

string[] result = input.Split(new string[] {"\n", "\r\n"}, StringSplitOptions.RemoveEmptyEntries);
于 2011-08-10T14:16:06.597 回答
0

看看 FileHelpers 库。它非常快速且非常灵活。尽管我认为您将不得不为您想要做的事情编写一些自定义处理逻辑。

于 2011-08-10T14:13:17.920 回答