C#从项目文件夹加载文件

问题描述:

我有一个问题。我有一个代码加载从路径XLSX我把文本框和我的代码如下所示:C#从项目文件夹加载文件

string PathConn = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" + safefilename.Text + ";Extended Properties=Excel 12.0;"; 
OleDbConnection conn = new OleDbConnection(PathConn); 
OleDbDataAdapter myDataAdapter = new OleDbDataAdapter("SELECT * FROM [" + textBox_sheet.Text + "$]", conn); 

DataTable dt = new DataTable(); 

myDataAdapter.Fill(dt); 
dataGridView1.DataSource = dt; 

有什么办法来加载XLSX从项目目录的datagridview?所以即使我切换到不同的电脑,我也不必每次都放上路径。

+0

究竟是什么项目目录?在哪里你最后有你的'* .exe'文件?或者你在谈论VS-Project目录的第一级? –

+0

例如,如果我把我的xlsx文件放在这里:\ program \ obj \ x86 \ Debug \ TempPE 里面的项目文件夹 –

运行应用程序时,可执行文件所在的目录将是当前目录(.\)。

调试时,可执行文件位于bin\Debug文件夹中。你的项目目录具有路径..\..\

string PathConn = @"Provider=Microsoft.ACE.OLEDB.12.0;Data Source=..\..\" + safefilename.Text + ";Extended Properties=Excel 12.0;"; 

当您移动应用程序的可执行这样可不行,..\..\仅指目录中的目录层次结构向上两级。

您可能希望将xlsx文件放在与可执行文件相同的目录中,因为移动可执行文件时更易于维护。

我的首选解决方案是将xlsx文件保存在AppData的应用程序目录中。您可以在“安装”应用程序时将文件移动到那里。然后,您可以通过这样得到的目录的引用:

Path.Combine(Environment.GetFolderPath(Environment.SpecialFolder.LocalApplicationData), "MyApplication"); 

让你有这样的:

string PathConn = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" + Path.Combine(Environment.GetFolderPath(Environment.SpecialFolder.LocalApplicationData), "MyApplication", safefilename.Text) + ";Extended Properties=Excel 12.0;"; 
+0

非常感谢。 –