我在使用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
答案 0 :(得分:1)
我相信Microsoft.Jet库中有一个扩展属性允许这样的东西....我记得几年前有一个类似的问题,我想我修复了这个问题。做一些关于扩展属性的谷歌搜索,看看你是否能找到一个有助于你的领域接受数字的