2008-11-05 71 views
2

好吧,我导入和解析C#应用程序中的CSV文件。我开始做一个简单的ReadLine(),并在逗号分割,但事实证明一些文本字段中有逗号。所以我开始推出我自己的分裂功能。幸运的是,这只是几分钟前,“嘿,笨蛋,有人可能已经这样做了?”灯亮了,经过几分钟的搜索,我意识到我可以做一个OleDb连接到目录并以这种方式导入它们。这就像一个冠军,直到我遇到了几个文件名称中带有逗号和括号的文件。然后它爆炸了。任何建议让它从这样的文件导入?不,我无法控制输入文件名称。有些可能会直接从CD中读取,所以我不能临时更改文件名。如何导入带有“不正确”文件名的CSV文件?

回答

1

将这些文件复制到%TEMP%文件夹,并给它们创建名称Path.GetTempFileName()。你只需要跟踪所有的文件名,以便之后删除它们。

不是很有效,但是会工作;-)

4

我已经使用这个CsvReader,工作得非常好。

+0

借调(和+1) – 2008-11-05 14:56:50

0

您可以使用逗号分割,但是通过搜索以双引号开头并以双引号结尾的字段对然后重新组合它们来处理数据。

当您遇到双引号并且在quoteFound为true时忽略所遇到的任何逗号时,您可以手动走线以查找逗号,同时设置quoteFound布尔值的开和关。

您可以将源文件复制到应用程序目录中作为第一件事,通过在最后添加“.csv”来重命名所有文件。

我很确定,我用正则表达式以一种令人愉快的方式做到了这一点,但我无法弄清楚我的哪个项目是这样,所以我没有代码提供。

ETA:我也认为如果你正在读入SQL Server,那么你可以使用SqlBulkCopy类,然后你可以根据需要查询它。