C# 使用OleDB字符串数据类型导入CSV文件?

C# 使用OleDB字符串数据类型导入CSV文件?,c#,.net,csv,oledb,C#,.net,Csv,Oledb,我正在编写一个C.NETWeb应用程序,用户将上传CSV文件进行处理。这些CSV文件包含许多数据类型,其中一些数据类型我遇到了问题。有一个20位的收据编号字段正在以科学记数法9.1234563E+18导入,而不是91234563000000000,并且任何前导零都将被删除。前导零也会在另一个4位数的门店编号字段中删除 我已经读过关于创建Schema.ini文件来定义数据类型的内容,但是每个文件都有不同的文件名,这意味着我必须以编程方式生成一个新的模式文件,而且由于多个用户可能同时使用应用程序,所

我正在编写一个C.NETWeb应用程序,用户将上传CSV文件进行处理。这些CSV文件包含许多数据类型,其中一些数据类型我遇到了问题。有一个20位的收据编号字段正在以科学记数法9.1234563E+18导入,而不是91234563000000000,并且任何前导零都将被删除。前导零也会在另一个4位数的门店编号字段中删除

我已经读过关于创建Schema.ini文件来定义数据类型的内容,但是每个文件都有不同的文件名,这意味着我必须以编程方式生成一个新的模式文件,而且由于多个用户可能同时使用应用程序,所以它有点排除了这个选项


有人有什么建议吗?

这个CSV文件是用Excel创建的吗?如果是,请确保用户将列设置为正确的数据类型。我以前也遇到过类似的问题,但这是因为用户将日期字段设置为不同的类型-因此,我不会返回类似20100408的内容,而是得到24782:-


否则,请尝试读取每个字段中的纯文本…然后自己处理转换

听起来您必须编写一些自定义代码,手动读取文件并自己拆分字段。您可以轻松地一次读取一行,并使用String.Split方法获取各个字段。当然,这是假设CSV文件始终采用相同的格式,因此无论文件来自何处,您都可以以相同的方式处理每个字段。通过这种方式,您可以完全按照您想要的方式处理每个字段。

我通过从Excel导出一些数据创建了一个示例CSV,我正在用它进行测试。也许我疯了,但我不认为在Excel中更改数据类型会有任何作用——它是CSV文件中的纯文本数据,不包含任何模式信息。我可能最终不得不手动编写一些代码来解析文件,但我更喜欢使用现有的功能。哦,是的……你完全正确。我使用了一个ExcelReader自定义类来读取这些数据。我的错!奇怪的是,Jet解析器正在将这个数字转换成科学符号。。。?祝你好运最好的选择可能不是使用OleDb,而是使用一些专用的CSV阅读器。您是说CSV中的数据正确,但导入的数据前导零已删除?我只是想确定我对你的理解是正确的。