這裏是我想從一個CSV導入包含在一個領域擁有超過一個值的CSV文件
Time|Person|Products|Address
(now)|person1|val1*val2*val3|adr1
其中*
是斷行/回車
導入數據下面是我導入時的樣子:
(now)|person1|val1val2val3|adr1
這是我需要它看起來像:
(now)|person1|val1|adr1
(now)|person1|val2|adr1 etc.
我已經試過:自定義編碼主要圍繞string.Spilt()
基於CSV分析器,它給我確切的結果,永遠走上過程。我試過Sebastien Lorion的CSVReader
,它給了我完全相同的結果,雖然它明顯更快,更容易插入到我現有的代碼中。我甚至用完全相同的結果嘗試了VB TextFieldParser
。
現在,這裏就是我想這樣做:
某種方式傳遞字段的值(我不知道如何引用它們)當我把它到達它通過它返回一個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());
}
你是對的,但確實我怎麼分割值。每個產品的字符串長度都不相同,所以我不能通過索引來做到這一點,沒有模式可以區分一種產品,所以我不能使用正則表達式? – Dani
我已經更新了我的答案,該代碼段將在新行上打斷一個字符串。然後,您可以通過結果添加新行項目來複制當前行項目中的時間,人員和地址並添加新的產品類型。 –
非常感謝Russ – Dani