C#导入csv文件,数据中有逗号怎么处理

 我来答
有平卉qC
2019-03-30 · TA获得超过130个赞
知道答主
回答量:73
采纳率:71%
帮助的人:8.9万
展开全部
    在小批量数据导入的时候,最常用的就是使用excel工具,将数据保存为xls或csv文件,然后上传到服务器,然后读取出来通过数据库访问类的相关方法更新到数据库中。对于如何读取xls文件的方法,网上太多了,使用excel对象或ole db/odbc连接都行。对于csv文件,其中有一种方式就是通过文件流,将它作为文本读取出来,这其中会遇到一点小意外。
我们知道,使用excel工具保存成csv文件时有几个规则:
1、每一行的单元格内容之间用逗号分隔。
2、如果单元格的内容本身有逗号,这个单元格的内容将会用引号包含。
3、如果单元格的内容本身有引号,引号不在首或尾,这个单元格内容不会被引号包含。引号在首或尾,这个单元格内容会被引号包含且原来首尾的引号会被转义。
所以对于这样的内容,直接按逗号或引号使用split方法明显不合适,需要预先处理一下。办法很多,最容易想到的就是用正则过滤掉本身带逗号或引号的内容,剩下的再按逗号split就方便了,我将csv文件中的每一行获取出来存放到一个键值对的集合中,为了保证前后顺序一致,使用SortedList。
在八境台喝脉动的芥蓝
2019-03-30 · TA获得超过646个赞
知道小有建树答主
回答量:352
采纳率:100%
帮助的人:10.8万
展开全部
现在要读取一个CSV文件,将内容读取后用excel的格式输出,
读取的时候使用StringTokenizer类,用逗号将CSV的数据用逗号一个个分割,
csv的格式是这样的(值与值之间用半角逗号分隔):
"aaa","bbb","ccc","ddd","eee";
像这样的情况是没有问题的;
但是当数据中也有半角逗号时,例如:
"aaa,fff","bbb,ggg"
读取的时候就会出现字符被分割为"aaa(第一个字符),fff"(第二个字符)
一个字符被分割为两个了,而且都只有一个双引号,这会造成数据的混乱,

有没有朋友知道怎么处理的?
可以先把类似"aaa,fff"中的逗号先用一个特殊的字符串替换掉(根据逗号的上一个字符和下一个字符不是 " 做为条件过滤),再处理,最后在替换回来
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
爱菠萝5
2019-03-22
知道答主
回答量:5
采纳率:0%
帮助的人:3941
展开全部
参考 https://blog.csdn.net/hancluo/article/details/86590732
亲测可行

//需要先添加Microsoft.VisualBasic的引用
using Microsoft.VisualBasic.FileIO;
namespace ConsoleApp1
{
class Program
{
static void Main(string[] args)
{
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
}
}
}
}
}

}
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
l7722526
2019-03-23 · TA获得超过2.7万个赞
知道大有可为答主
回答量:2.8万
采纳率:84%
帮助的人:3764万
展开全部
1、将所有分隔符替换为软回车: 点击菜单:编辑→替换 在查找内容内输入分隔符 (如“,”等) 在替换处输入软回车符:按Alt键别放,依次输入小键盘上的数字键1和0,松开Alt键(此时在输入位置看不出变化,但内容已输入)。 进行全部替换 2、点设置单元格格式-对齐-自动换行
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
一万光年MEGn0
2019-03-30 · TA获得超过3712个赞
知道大有可为答主
回答量:4602
采纳率:67%
帮助的人:1069万
展开全部
可以过滤的,编程过滤一下
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 8条折叠回答
收起 更多回答(9)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式