在处理CSV文件的时候发现,不能简单的用逗号来拆分内容,如果在双引号里面有逗号,那么这行将解析错误。最后找到个用正则表达式来splite的简单方面。原理就是用
","来作为拆分的标记。
///
<summary>
/// 把一个CSV文件读到一个DataTable中
/// </summary>
/// <param name="strpath"> 文件完整路径 </param>
/// <returns> DataTable </returns>
public static DataTable GetTable( string strpath)
{
Regex reg = new Regex( " \ " ,\ "" );
int intColCount = 0 ;
DataTable mydt = new DataTable( " myTableName " );
// DataColumn mydc;
// DataRow mydr;
// string strpath = "";
string strline;
string [] aryline;
StreamReader mysr = new StreamReader(strpath,System.Text.Encoding.Default);
strline = mysr.ReadLine();
aryline = reg.Split(strline);
intColCount = aryline.Length;
for ( int i = 0 ; i < aryline.Length; i ++ )
{
DataColumn mydc = new DataColumn(aryline[i].Replace( " \ "" , "" ), typeof(string));
mydt.Columns.Add(mydc);
}
while ((strline = mysr.ReadLine()) != null )
{
aryline = reg.Split(strline);
DataRow mydr = mydt.NewRow();
for ( int i = 0 ; i < intColCount; i ++ )
{
mydr[i] = aryline[i].Replace( " \ "" , "" );
}
mydt.Rows.Add(mydr);
}
return mydt;
}
/// 把一个CSV文件读到一个DataTable中
/// </summary>
/// <param name="strpath"> 文件完整路径 </param>
/// <returns> DataTable </returns>
public static DataTable GetTable( string strpath)
{
Regex reg = new Regex( " \ " ,\ "" );
int intColCount = 0 ;
DataTable mydt = new DataTable( " myTableName " );
// DataColumn mydc;
// DataRow mydr;
// string strpath = "";
string strline;
string [] aryline;
StreamReader mysr = new StreamReader(strpath,System.Text.Encoding.Default);
strline = mysr.ReadLine();
aryline = reg.Split(strline);
intColCount = aryline.Length;
for ( int i = 0 ; i < aryline.Length; i ++ )
{
DataColumn mydc = new DataColumn(aryline[i].Replace( " \ "" , "" ), typeof(string));
mydt.Columns.Add(mydc);
}
while ((strline = mysr.ReadLine()) != null )
{
aryline = reg.Split(strline);
DataRow mydr = mydt.NewRow();
for ( int i = 0 ; i < intColCount; i ++ )
{
mydr[i] = aryline[i].Replace( " \ "" , "" );
}
mydt.Rows.Add(mydr);
}
return mydt;
}