从c#中导入csv [英] Import from csv in c#
问题描述
我想在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屋!