【问题标题】:How do you import CSV files with "improper" file names?如何导入具有“不正确”文件名的 CSV 文件?
【发布时间】:2010-09-20 21:19:20
【问题描述】:
好的,我正在 C# 应用程序中导入和解析 csv 文件。我开始做一个简单的 ReadLine() 并以逗号分隔,但事实证明某些文本字段中有逗号。所以我开始推出自己的拆分功能。幸运的是,就在几分钟后,“嘿笨蛋,可能已经有人这样做了?”灯亮了,经过几分钟的搜索,我意识到我可以将 OleDb 连接到目录并以这种方式导入它们。这就像一个冠军,直到我遇到一些文件名中带有逗号和括号的文件。然后它爆炸了。关于让它从这样的文件导入的任何建议?不,我无法控制输入文件名。有些可能会直接从CD中读取,所以我暂时无法更改文件名。
【问题讨论】:
标签:
c#
.net
file
csv
import
【解决方案1】:
您可以用逗号分隔,但可以通过搜索以双引号开头和结尾的字段对然后重新组合它们来处理数据。
您可以在遇到双引号时手动查找逗号,同时打开和关闭 quoteFound 布尔值,并在 quoteFound 为 true 时忽略遇到的任何逗号。
您可以首先将源代码复制到应用程序目录,然后通过在末尾添加“.csv”来重命名所有文件。
我很确定我使用正则表达式以一种令人愉悦的聪明方式做到了这一点,但我无法弄清楚它是我的哪个项目,所以我没有代码可提供。
ETA:我还认为,如果您正在读取 SQL Server,则可以使用 SqlBulkCopy 类,然后您可以根据需要查询它。
【解决方案3】:
将这些文件复制到 %TEMP% 文件夹,并为其命名由 Path.GetTempFileName() 创建。您只需要跟踪所有文件名以便之后删除它们。
效率不高,但会起作用 ;-)