/// <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;
}
本文介绍了一种使用正则表达式处理CSV文件的方法,解决了当字段内包含逗号时的解析问题。通过创建一个读取CSV文件并将其转换为DataTable的实用函数,确保了即使在复杂数据结构下也能正确读取数据。
615

被折叠的 条评论
为什么被折叠?



