2017-08-16 55 views
0

我有一個問題。我有一個代碼加載從路徑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 裏面的項目文件夾 –

回答

0

運行應用程序時,可執行文件所在的目錄將是當前目錄(.\)。

調試時,可執行文件位於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

非常感謝。 –

相關問題