如何使用“不正确”的文件名导入CSV文件?

时间:2008-11-05 14:42:53

标签: c# .net file csv import

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

3 个答案:

答案 0 :(得分:4)

我使用过此CsvReader,效果非常好。

答案 1 :(得分:1)

将这些文件复制到%TEMP%文件夹,为其提供由Path.GetTempFileName()创建的名称。您只需要跟踪所有文件名,然后再删除它们。

效率不高,但可行; - )

答案 2 :(得分:0)

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

当你遇到双引号时,你可以手动走线寻找逗号,同时设置一个quoteFound布尔值,并忽略quoteFound为真时遇到的任何逗号。

您可以首先将源复制到应用程序目录,通过在末尾添加“.csv”来重命名所有文件。

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

ETA:如果您正在阅读SQL Server,我认为您可以使用SqlBulkCopy类,然后您可以根据需要进行查询。