关于StreamReader读取excel遇到某列出现多个逗号的问题 excel数据列 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 你确定这是excel?你明明是按读txt的方法来读的excel用txt打开,列与列应该是tab隔开的,C#语法中用"\t"表示 你这是否读取的CSV文件,CSV文件基本都是以 , 分隔,然后读取http://blog.163.com/china__xuhua/blog/static/19972316920120655450826/ csv的标准做法是用双引号打包:1,2,"a,b",3。万一内容有双引号,则每个双引号用两个双引号代替。因此,一个简单的做法就是,只把偶数个双引号后的逗号作为分割符。static string[] SplitCsv(string line){ List<string> list = new List<string>(); StringBuilder sb = new StringBuilder(); bool quoted = false; foreach (char c in line) { if (c == ',' && !quoted) { list.Add(sb.ToString().Replace("\"\"", "\"")); sb = new StringBuilder(); } else { sb.Append(c); if (c == '\"') {quoted = !quoted;} } } list.Add(sb.ToString().Replace("\"\"", "\"")); return list.ToArray();} 你这个明显就是都csv,而不是excel。csv规定,如果字段内容本身包含,,那么字段就会用""包裹起来。所以你要需要判断," C# TreeView控件增加节点目录 C#中如何调用vb6开发的dll 如何用datagridview1上的数据添加到datagridview2中? 高手们都起床了吗?希望你们给我介绍一本书,关于 WCF的!!! Ext.Net中Store数据写入 用李洪根的打包方法进行打包,能不能把密码那个文本框设成* c#如何在winfrom中调用我的webservice? 怎么能让同时? C#中连通区域标记的问题 可选参数怎么定义? vs2012创建不了基于服务的数据库 C# 访问Access问题
excel用txt打开,列与列应该是tab隔开的,C#语法中用"\t"表示
因此,一个简单的做法就是,只把偶数个双引号后的逗号作为分割符。static string[] SplitCsv(string line)
{
List<string> list = new List<string>();
StringBuilder sb = new StringBuilder();
bool quoted = false;
foreach (char c in line)
{
if (c == ',' && !quoted)
{
list.Add(sb.ToString().Replace("\"\"", "\""));
sb = new StringBuilder();
}
else
{
sb.Append(c);
if (c == '\"') {quoted = !quoted;}
}
}
list.Add(sb.ToString().Replace("\"\"", "\""));
return list.ToArray();
}
csv规定,如果字段内容本身包含,,那么字段就会用""包裹起来。所以你要需要判断,"