将csv文件读入DataTable

时间:2011-07-22 05:18:34

标签: csv datatable oledb

我是韩语,我在将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文件包含韩语单词,它会将韩语单词转换成一些奇怪的单词。

我需要你的帮助。

谢谢~~~

3 个答案:

答案 0 :(得分:1)

请尝试以下解析器,

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

答案 1 :(得分:0)

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

答案 2 :(得分:0)

它发生在我身上。我发现保存到utf-8的文件是问题所在。 你需要使用notpad或任何时候将文件保存为ANSI。 那么如果你还有问题,你需要在你需要的语言上添加这个行depand。

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