#region 读Csv,静态方法
/// <summary>
/// 静态方法,读取规则的2维表的Csv成DataSet
/// </summary>
/// <param name="fileFullPath">全路径,包括文件名</param>
/// <returns>DataSet</returns>
public static DataTable Csv2DataSet(string fileFullPath)
{
int intColCount = 0;
bool blnFlag = true;
DataTable mydt = new DataTable("myTableName");
DataColumn mydc;
DataRow mydr;
string strpath = fileFullPath; //cvs文件路径
string strline;
string[] aryline;
System.IO.StreamReader mysr = new System.IO.StreamReader(strpath, Encoding.Default);
while ((strline = mysr.ReadLine()) != null)
{
aryline = strline.Split(new char[] { ',' });
if (blnFlag)
{
blnFlag = false;
intColCount = aryline.Length;
for (int i = 0; i < aryline.Length; i++)
{
mydc = new DataColumn(aryline[i]);
mydt.Columns.Add(mydc);
}
}
mydr = mydt.NewRow();
for (int i = 0; i < intColCount; i++)
{
mydr[i] = aryline[i];
}
mydt.Rows.Add(mydr);
}
return mydt;
}
#endregion
这段代码没有考虑到内容有逗号的情况,遇到内容含逗号的就不对了,所以各位大神请帮忙在这段代码里面加一些代码,完成这个功能
DEMO-00000001159,1,A212110002,"Binding Rings 13mm (80 Sheets, 100 s)",3,EA,30,2014-8-6 比如这行代码,双引号中间的逗号 是不能被分割的,也就是说 "Binding Rings 13mm (80 Sheets, 100 s)" 这是一段内容,不是两段
能写出来吗
参考:网页链接
亲测可行
using Microsoft.VisualBasic.FileIO;
using (TextFieldParser parser = new TextFieldParser(@"c:\temp\test.csv"))
{
parser.TextFieldType = FieldType.Delimited;
parser.SetDelimiters(",");
while (!parser.EndOfData)
{
//Processing row
string[] fields = parser.ReadFields();
foreach (string field in fields)
{
//TODO: Process field
}
}
}