2023年12月2日发(作者:)

读取CSV文件的几种方式

只做记录,没做过详细分析,用过数据连接,貌似还不错,别的方法没用过。1.数据连接方式:根据连接方式的不同,又分成几种:ODBC方式:会自动将第一行作为行头去掉,而且无法设置不去掉第一行。

代码///

/// 获取CSV导入的数据,不带后缀名//////文件路径///文件名称(.csv不用加)///public DataTable GetCsvData(string filePath, string fileName){string path = e(filePath, fileName);string connString =@"Driver={Microsoft Text Driver (*.txt; *.csv)};Dbq="+ filePath +";Extensions=asc,csv,tab,txt;";try{using (OdbcConnection odbcConn =new OdbcConnection(connString)){();OdbcCommand oleComm =new OdbcCommand();tion = odbcConn;dText ="select * from ["+ fileName +"]";OdbcDataAdapter adapter =new OdbcDataAdapter(oleComm);DataSet ds =new DataSet();(ds, fileName);();_dataSource = [0];return _dataSource;}}catch (Exception ex){throw ex;}}

OleDb方式,可以设置是否忽略第一行,HDR=Yes则忽略第一行。

代码connString =@"Provider=.4.0;Data Source="+filePath+";Extended Properties='text;HDR=No;FMT=Delimited'";try {using (OleDbConnection oledbConn =new OleDbConnection(connString)){();OleDbCommand oleComm =new OleDbCommand();tion = oledbConn;dText ="select * from ["+ fileName +"]";OleDbDataAdapter adapter =new OleDbDataAdapter(oleComm);DataSet ds =new DataSet();(ds, fileName);();_dataSource = [0];return [0];}}

经测试,这两种方法都可以,不知道有没有差别。

2.文件流方式:代码publicstatic List ReadCSV(string filePathName){List ls =new List();StreamReader fileReader=new StreamReader(filePathName);

string strLine="";while (strLine !=null){strLine = ne();if (strLine !=null&& >0){((','));}}

();return ls;}leParser的方式:代码privatevoid subImportCSV_FileIo(string strFile){eldParser TF =new eldParser(strFile,oding("GB2312"));ters =newstring[] { "," }; //设置分隔符string[] strLine;while (!ata){try{strLine = elds();//开始导入数据库,这个地方要排除行头}catch{}}();}