以下是将csv文件转换为DataTabel的代码。
public static DataTable ImportCSVtoDatatable(string filepath, string strQuery )
{
//strQuery = "Select * From [GJ20150417044150]";
//string filepath= @"h$\\Data\\GJ20150417044150.csv";
DataSet ds = new DataSet();
var constring = string.Format(@"Provider=Microsoft.Jet.OleDb.4.0; Data Source={0};Extended Properties=""Text;HDR=YES;FMT=Delimited""", Path.GetDirectoryName(filepath));
OleDbConnection con = new OleDbConnection(constring);
OleDbDataAdapter da = new OleDbDataAdapter(strQuery, con);
//Error Occuring on this step
da.Fill(ds);
DataTable dt = ds.Tables[0];
return dt;
}
我的程序崩溃了,我得到的错误如下:
Microsoft Jet数据库引擎找不到对象' GJ20150417044150.txt'。确保对象存在,并且您正确拼写其名称和路径名称。
我猜是,它正试图搜索" GJ20150417044150.txt"文件,但无法得到它,因为它实际上" GJ20150417044150.csv"文件并没有" GJ20150417044150.txt"在给定的路径中。
请帮助我:
1:如何摆脱此错误并选择所需的.csv文件以转换为数据表。
2:为什么在此过程中将.txt添加到GJ20150417044150
答案 0 :(得分:1)
因此,解决这个问题的方法是改变这些行:
//strQuery = "Select * From [GJ20150417044150]";
//string filepath= @"h$\\Data\\GJ20150417044150.csv";
到这个
var fileName = Path.GetFileName(filepath);
strQuery = @"SELECT * FROM " + fileName;
问题是正在使用的strQuery
的值不包含完整文件名,而只包含GJ20150417044150
部分,Jet引擎尝试将其附加到默认文本扩展名{{ 1}},当它找不到名为.txt
的文件时。