使用c#时读取csv文件,不要用双引号读取逗号
我正在使用c#阅读csv文件这里是一个小代码片段。
using (StreamReader readFile = new StreamReader("C:\temp\" + whichTable)) { while ((line = readFile.ReadLine()) != null) { row = line.Split(','); switch (row.Length) { case 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(row[4]); v4.Add(row[3]); counter++; break; } counter++; } break; }
你可以从我的代码中看出我测试字符串行的长度,以确保它的五个长度完全正确。 我的问题是,如果在csv中有一个带逗号的字段,那么计算到大于5.我的csv形成良好,所以当发生这种情况时,我确实有一个双引号的字段。 我怎么能告诉c#只计算双引号之外的逗号? 那真的是我的问题。
不要自己解析CSV – 这种格式比大多数人意识到的要难以解析。 您可以使用许多现有的优秀CSV解析器。
TextFieldParser
库存在于Microsoft.VisualBasic.FileIO命名空间(常规.NET库)中,而许多第三方库 – FileHelpers是一种流行的自由选择。
有多种可能的解决方法,最简单的方法是逐字逐行,并自己计算逗号。 如果你遇到一个引号,你可以切换一个布尔值,比方说。 bool inQuotes
,当inQuotes
为true时,你只需忽略逗号。
您可以使用以下代码,它为我工作:
上述就是C#学习教程:使用c#时读取csv文件,不要用双引号读取逗号分享的全部内容,如果对大家有所用处且需要了解更多关于C#学习教程,希望大家多多关注—计算机技术网(www.ctvol.com)!
private void ImportCSV(string filePath = @"E:nucc_taxonomy_140.csv", string tableName = "TempTaxonomyCodes") { string tempPath = System.IO.Path.GetDirectoryName(filePath); string strConn = @"Driver={Microsoft Text Driver (*.txt; *.csv)};Dbq=" + tempPath + @";Extensions=asc,csv,tab,txt"; OdbcConnection conn = new OdbcConnection(strConn); OdbcDataAdapter da = new OdbcDataAdapter("Select * from " + System.IO.Path.GetFileName(filePath), conn); DataTable dt = new DataTable(); da.Fill(dt); using (SqlBulkCopy bulkCopy = new SqlBulkCopy(ConfigurationSettings.AppSettings["dbConnectionString"])) { bulkCopy.DestinationTableName = tableName; bulkCopy.BatchSize = 50; bulkCopy.WriteToServer(dt); } }
本文来自网络收集,不代表计算机技术网立场,如涉及侵权请联系管理员删除。
ctvol管理联系方式QQ:251552304
本文章地址:https://www.ctvol.com/cdevelopment/1033701.html