Microsoft.Jet.OLEDB.4.0读取csv文件的奇怪问题

时间:2011-04-13 10:04:09

标签: c#

我在使用c#读取.csv文件时遇到了一个奇怪的问题。以下是文件内容:

**ColumnName,                   Column Value**
Bestemming,                     aaa.asp
BuEn_SubSystem,                 B
BusinessListActive,             FALSE
cancreatelogin,                 0
CDTAccess,                      Y
CDTAssessmentNo,                4172
CDTAssessRO,                    N
CDTCntComp,                     0
CDTCntOnf,                      0
***CDTExpiry,                   1***

我使用以下代码来读取文件:

using System;
using System.Data;
using System.IO; //not used by default
using System.Data.OleDb; //not used by default


class CSVParser
    {
        public static DataTable ParseCSV(string path)
        {
            if (!File.Exists(path))
                return null;

            string full = Path.GetFullPath(path);
            string file = Path.GetFileName(full);
            string dir = Path.GetDirectoryName(full);


            //create the "database" connection string 
            string connString = "Provider=Microsoft.Jet.OLEDB.4.0;"
               + "Data Source=\"" + dir + "\\\";"
               + "Extended Properties=\"text;HDR=Yes;FMT=Delimited\"";

            //create the database query

            string query = "SELECT * FROM " + "[" + file + "]";

            //create a DataTable to hold the query results
            DataTable dTable = new DataTable();


            //create an OleDbDataAdapter to execute the query
            OleDbDataAdapter dAdapter = new OleDbDataAdapter(query, connString);

            try
            {
                //fill the DataTable
                dAdapter.Fill(dTable);                  

            }
            catch (InvalidOperationException /*e*/)
            { }

            dAdapter.Dispose();

            return dTable;
        }
    }

出于某种原因 CDTExpiry 字段出现问题。我所要做的就是只将该数字更改为非数字,并且它工作正常!例如 CDTExpiry,1 CDTExpiry,

任何人都知道为什么会发生这种情况,因为我使用此代码来处理来自csv文件的大量数据,并且我不想总是先检查该文件的代码行。

TX

1 个答案:

答案 0 :(得分:1)

我相信Microsoft.Jet库中有一个扩展属性允许这样的东西....我记得几年前有一个类似的问题,我想我修复了这个问题。做一些关于扩展属性的谷歌搜索,看看你是否能找到一个有助于你的领域接受数字的