从c#中导入csv [英] Import from csv in c#

查看:90
本文介绍了从c#中导入csv的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我想在c#windows应用程序中导入csv文件。



我尝试了什么:



 StreamReader sr =  new  StreamReader(csvfolderPath); 
string line = sr.ReadLine();
string [] value = line.Split(' ,');
DataTable dt = new DataTable();
DataRow行;
foreach 字符串 dc value
{

dt.Columns.Add( new DataColumn(dc));
}

while (!sr.EndOfStream)
{
value = sr.ReadLine()。Split(' ,');
if value .Length == dt.Columns.Count)
{
row = dt.NewRow();
row.ItemArray = value ;
dt.Rows.Add(row);
}
}





我可以从上面的代码中读取csv文件,但主要问题是列有句子,分隔和StreamReader正在读取所有列,用逗号分隔,所以,



如果我有专栏



Column1column2column3column4我的名字



注意:最后一栏我的名字是单栏



在上面,我有5列



结果后我得到5列,如Column1,column2 ,column3,column4,我的,名称



如果我拆分列,



然后我得到5列(Column1,column2,column3,column4,我的,名称)



所以,你能解释一下如何用两个特殊字符拆分列,

解决方案

如果你不想在值中使用引号,你可以做这个?

我复印你的代码并做了一些修改。

这将拆分为,而不是,



 StreamReader sr =  new  StreamReader(csvfolderPath); 
string line = sr.ReadLine();
string [] value =
line.Split( new string [] {\ ,\},StringSplitOptions.None);
DataTable dt = new DataTable();
DataRow行;
foreach string dc in value
{

dt.Columns.Add( DataColumn(dc.Trim(' '));
}

while (!sr.EndOfStream)
{
value = sr.ReadLine()。Split(' );
if value .Length == dt.Columns.Count)
{
row = dt.NewRow();
row.ItemArray = value ;
dt.Rows.Add(row);
}
}


因为您在每个逗号分割字段,但忽略引号中的字段。请参阅使用OleDb导入文本文件(选项卡,CSV,自定义) [ ^ ]用于更简单的方法。


从这里开始:

用C#读取和编写CSV文件 [ ^ ]



C#中的简单快速CSV库 [ ^ ]

I wanna import csv file in c# windows application.

What I have tried:

StreamReader sr = new StreamReader(csvfolderPath);
                    string line = sr.ReadLine();
                    string[] value = line.Split(',');
                    DataTable dt = new DataTable();
                    DataRow row;
                    foreach (string dc in value)
                    {

                        dt.Columns.Add(new DataColumn(dc));
                    }

                    while (!sr.EndOfStream)
                    {
                        value = sr.ReadLine().Split(',');
                        if (value.Length == dt.Columns.Count)
                        {
                            row = dt.NewRow();
                            row.ItemArray = value;
                            dt.Rows.Add(row);
                        }
                    }



I am able to read the csv file from my above code but main problem is column have sentences with , separated and StreamReader is reading all column with comma separated so,

If I have column

"Column1" "column2" "column3" "column4" "My, Name"

Note: last column "My, Name" is single column

In above, I have 5 column

after result i am getting 5 columns like "Column1","column2","column3","column4","My","Name"

and if I split column with ,

then i am getting 5 column ("Column1","column2","column3","column4","My","Name")

so, can you explain me how to split column with two special character ",

解决方案

If you don´t want the quotation marks in values you can do this?
I copied your code and made some changes.
This will split on "," instead of ,

StreamReader sr = new StreamReader(csvfolderPath);
                    string line = sr.ReadLine();
                    string[] value = 
line.Split(new string[] { \",\""},StringSplitOptions.None);
                    DataTable dt = new DataTable();
                    DataRow row;
                    foreach (string dc in value)
                    {
 
                        dt.Columns.Add(new DataColumn(dc.Trim('"'));
                    }
 
                    while (!sr.EndOfStream)
                    {
                        value = sr.ReadLine().Split(',');
                        if (value.Length == dt.Columns.Count)
                        {
                            row = dt.NewRow();
                            row.ItemArray = value;
                            dt.Rows.Add(row);
                        }
                    }


Because you are splitting fields at each comma, but ignoring fields in quotes. See Using OleDb to Import Text Files (tab, CSV, custom)[^] for a simpler method.


Start here :
Reading and Writing CSV Files in C#[^]

Simple and fast CSV library in C#[^]


这篇关于从c#中导入csv的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆