C#学习教程:用c#读csv文件,不要读带双引号的逗号片段。使用(StreamReaderreadFile=newStreamReader("C:\temp\"+whichTable)){while((line=readFile.ReadLine())!=null){row=line.Split(',');switch(row.Length){案例5:if(counter==0){break;}else{v00.Add(Convert.ToInt32(Regex.Replace(row[0],@"[^w.@-]","")));}if(row[1]==""){v01.Add((1));}else{v01.Add(Convert.ToInt32(Regex.Replace(row[1],@"[^w.@-]","")));}if(row[2]==""){v02.Add(2);}else{v02.Add(Convert.ToInt32(Regex.Replace(row[2],@"[^w.@-]","")));}v3.Add(行[4]);v4.Add(行[3]);计数器++;休息;}计数器++;}休息;您可以从我的代码中看到,我测试了字符串行的长度以确保它恰好是五个长度。我的问题是,如果csv中有一个带逗号的字段,那么它算作大于5。我的csv格式正确,所以当发生这种情况时,我确实有一个带双引号的字段。我怎样才能告诉c#只计算双引号外的逗号?那真的是我的问题。不要自己解析CSV-这种格式比大多数人意识到的更难解析。您可以使用许多现有的优秀CSV解析器。TextFieldParser库存在于Microsoft.VisualBasic.FileIO命名空间(常规.NET库)中,而许多第三方库-FileHelpers是一种流行的免费选择。有多种可能的解决方法,最简单的方法是逐行逐行计算逗号。如果你遇到一个引号,你可以切换一个布尔值,比如说。boolinQuotes,当inQuotes为真时,您只需忽略逗号。你可以使用下面的代码,它对我有用:上面是C#LearningTutorial:Readcsvfilewhenusingc#,don'tusedoublequotestoreadcommasharethewholecontent,ifit'susefultoyouallandneedtoknowmore关于C#学习教程,希望大家多多关注~);stringstrConn=@"Driver={MicrosoftTextDriver(*.txt;*.csv)};Dbq="+tempPath+@";Extensions=asc,csv,tab,txt";OdbcConnectionconn=newOdbcConnection(strConn);OdbcDataAdapterda=newOdbcDataAdapter("从"+System.IO.Path.GetFileName(filePath),conn);DataTabledt=newDataTable();da.Fill(dt);使用(SqlBulkCopybulkCopy=newSqlBulkCopy(ConfigurationSettings.AppSettings["dbConnectionString"])){bulkCopy.DestinationTableName=tableName;bulkCopy.BatchSize=50;bulkCopy.WriteToServer(dt);}}本文收集自网络,不代表立场。如涉及侵权,请点击右侧联系管理员删除。如需转载请注明出处:
