读取CSV数据的最佳方法是什么?

时间:2008-11-27 07:32:43

标签: csv connection-string oledb c#-2.0

我正在使用C#并尝试使用此连接字符串读取CSV;

Provider=Microsoft.Jet.OLEDB.4.0;Data Source=C:\Documents and Settings\rajesh.yadava\Desktop\orcad;Extended  Properties="Text;HDR=YES;IMEX=1;FMT=Delimited"

这适用于制表符分隔数据。

我想要一个连接字符串,它应该用于制表符分隔以及逗号(,)和管道(|)。

如何为CSV创建通用连接字符串。

由于 拉杰什

7 个答案:

答案 0 :(得分:2)

filehelpers库是一个选项吗?

答案 1 :(得分:1)

我知道这不能回答你的问题,但这是一个警告。

如果您使用的是64位系统,我必须创建自己的阅读器,因为您没有获得正确的驱动程序。

如果您的软件将在64位系统上运行,请确保先测试它并且oledb或odbc驱动程序将存在。

答案 2 :(得分:1)

如果您需要快速顺序访问CSV文件,Fast CSV Reader可以是一个选项。我前段时间在一个项目中使用它取得了巨大的成功。它应该被很好地优化,并且如果需要,还提供缓存版本。此外,它自2005年首次发布(2008-10-09上次更新)以来已多次更新,并通过实施System.Data.IDataReader支持基本数据绑定。

答案 3 :(得分:0)

答案 4 :(得分:0)

答案 5 :(得分:0)

如果没有滚动自定义解决方案,我不确定是否有一种直接支持多个分隔符的方法。 This page建议通过schema.ini,您可以选择:

  • TabDelimited
  • CSVDelimited
  • 一个特定字符(双引号除外)
  • 固定宽度

答案 6 :(得分:0)

    class CSVFile extends SplFileObject
{

private $keys;

    public function __construct($file)
    {
        parent::__construct($file);
        $this->setFlags(SplFileObject::READ_CSV);
    }

    public function rewind()
    {
        parent::rewind();
        $this->keys = parent::current();
        parent::next();
    }

    public function current()
    {
        return array_combine($this->keys, parent::current());
    }

    public function getKeys()
    {
        return $this->keys;
    }
}

然后使用:

$csv = new CSVFile('exmaple.csv');

你可以使用:

遍历行
foreach ($csv as $line)
{