我跟随Jim Scott's instruction用以下代码将CSV读入DataTable
:
private OleDbConnection CNN = new OleDbConnection("Provider=Microsoft.Jet.OLEDB.4.0;Data Source="+Directory.GetCurrentDirectory()+";Extended Properties=\"Text;HDR=Yes\"");
private OleDbCommand CMD;
private OleDbDataAdapter ADT;
private DataTable DT=new DataTable();
protected void Page_Load(object sender, EventArgs e)
{
CNN.Open();
CMD = new OleDbCommand(@"select * from [Report.csv]", CNN);
ADT = new OleDbDataAdapter(CMD);
ADT.Fill(DT);
}
我已经将Report.csv
放在了根目录下,并尝试了以下操作!
将 Data Source
更改为localhost
,(localhost)
,~
,~\\
。
将Report.csv
更改为Report
。
最后将 Data Source
更改为Directory.GetCurrentDirectory()
,以使其正确连接。
问题:找不到,找不到Report.csv
!
我希望这是一个网页,所以我需要一种
OleDbConnection
连接到localhost
并指向根目录的方法!如果有人能教我该怎么做会很好!
请有人告诉我我在哪里做错了以及如何正确设置它!
非常感谢!
答案 0 :(得分:3)
最有可能是路径问题。您可以尝试执行以下操作吗?
protected void Page_Load(object sender, EventArgs e)
{
CNN.Open();
string fileName = "C:\Users\username\Desktop\Report.csv";
string sqlQuery = @"select * from [" + fileName + "]";
CMD = new OleDbCommand(sqlQuery, CNN);
ADT = new OleDbDataAdapter(CMD);
ADT.Fill(DT);
}
更新:
您可以使用Directory.GetCurrentDirectory()
而不是HttpContext.Current.Server.MapPath("~")
来提供当前根目录的路径。
如果您的网站位于:
C:\Web\shop
您正在访问以下网页:http://localhost:8080/Application/users/userdetails.aspx
1. Server.MapPath(".") returns C:\Web\shop\users
2. Server.MapPath("~") returns C:\Web\shop\