【问题标题】:Reading csv file into DataTable将csv文件读入DataTable
【发布时间】:2011-07-22 05:18:34
【问题描述】:

我是韩国人,在将 csv 文件导入 DataTable 时遇到问题。

我使用此代码导入 csv 文件。

    public static DataTable ParseCSV(string path)
    {
        string filePath = Path.GetDirectoryName(path);

        string oledbConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" + filePath + ";Extended Properties=\"text;HDR=Yes;FMT=Delimited\"";

        string csvFileName = Path.GetFileName(path);

        string sQuery = string.Format(" SELECT * FROM [{0}] ", csvFileName); 
        DataTable ds = null;

        OleDbDataAdapter adt = null;

        using (OleDbConnection con = new OleDbConnection(oledbConnectionString))
        {
            ds = new DataTable();
            adt = new OleDbDataAdapter(sQuery, con);
            adt.Fill(ds);
        }

        return ds;
    }

当csv文件中没有韩语时效果很好。

但是,如果 csv 文件包含韩语单词,它会将韩语单词转换为一些奇怪的单词。

我需要你的帮助。

谢谢~~~

【问题讨论】:

标签: csv datatable oledb


【解决方案1】:

请尝试以下解析器,

http://www.codeproject.com/KB/database/CsvReader.aspx

【讨论】:

    【解决方案2】:

    使用 UTF-8 编码保存您的 csv 文件。这很可能会解决您的问题。您可以使用 notepad++ 快速将您已保存的文件转换为 UTF-8,运行导入并查看是否有效。

    【讨论】:

    • 感谢您的回复。但是,我已经将文件保存为 UTF-8,我也尝试将其转换为 UTF-8,我的问题没有解决。
    【解决方案3】:

    这发生在我身上。我发现保存到 utf-8 的文件是问题所在。 您需要使用 notpad 或其他方式将文件保存为 ANSI。 那么如果你仍然有问题,你需要根据你需要的语言添加这一行。

    dataTable.Locale = CultureInfo.CurrentCulture;
    

    dataTable.Locale = CultureInfo.GetCultureInfo(your culture);
    

    这里是文化信息的代码。

    http://msdn.microsoft.com/en-us/library/system.globalization.cultureinfo%28v=vs.71%29.aspx

    【讨论】:

      猜你喜欢
      • 2011-10-18
      • 1970-01-01
      • 2013-02-16
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-03-06
      • 2011-05-16
      • 2021-05-05
      相关资源
      最近更新 更多