我使用以下代码来阅读我的csv文件:
public 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.ACE.OLEDB.12.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);
//fill the DataTable
dAdapter.Fill(dTable);
dAdapter.Dispose();
return dTable;
}
但是上面没有从csv文件中读取字母数字值。它只能读取数字或字母。
我需要修复以读取字母数字值吗?请建议。
答案 0 :(得分:1)
我建议你使用A Fast CSV Reader,它没有这个问题,速度要快得多。
答案 1 :(得分:0)
从连接字符串中删除IMEX = 1。我不认为你需要它用于CSV文件。
答案 2 :(得分:0)
尝试通过堆栈溢出发布的OleDBAdapter Excel QA。
我没试过,但听起来很有意思! LinqToExcel 他们说它也可以用在.CSV文件上......
答案 3 :(得分:0)
嗨所有这些代码都获得了字母数字值
using System.Data.OleDb;
string ConnectionString = @"Provider=Microsoft.Jet.OLEDB.4.0;" + "Data Source=" + filepath + ";" + "Extended Properties="+(char)34+"Excel 8.0;IMEX=1;"+(char)34;
string CommandText = "select * from [Sheet1$]";
OleDbConnection myConnection = new OleDbConnection(ConnectionString);
myConnection.Open();
OleDbDataAdapter myAdapter = new OleDbDataAdapter(CommandText, myConnection);
ds = null;
ds = new DataSet();
myAdapter.Fill(ds);