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?所以即使我切换到不同的电脑,我也不必每次都放上路径。
答
运行应用程序时,可执行文件所在的目录将是当前目录(.\
)。
调试时,可执行文件位于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
非常感谢。 –
究竟是什么项目目录?在哪里你最后有你的'* .exe'文件?或者你在谈论VS-Project目录的第一级? –
例如,如果我把我的xlsx文件放在这里:\ program \ obj \ x86 \ Debug \ TempPE 里面的项目文件夹 –