2011-09-16 24 views
0

我嘗試在用戶按下我的c#桌面應用程序中的鏈接時顯示現有的Excel文件。我把我的Excel文件放到我的項目文件夾中。不過,當我將我的項目設置到不同的計算機中時,excel文件的路徑將會改變。在打開excel文件時,我無法找到與直接路徑無關的方式,如C:\ example.xlsx。我怎麼解決這個問題?否則在c#桌面應用程序中打開現有的excel文件

string excelFilePath = Path.Combine(Path.GetDirectoryName(Application.ExecutablePath), "excelfiles\\myexcelfile.xlsx"); 

,如果你有預定義的,你需要有一些設置文件的存儲的文件:由於已經..

+0

你可以像這樣使用雙斜線「c:\\ example.xlsx」或@「c:\ example.xlsx」嗎? – ebattulga

回答

0

如果這些文件都存儲在您的一個應用文件夾中嘗試使用。

如果您只需要允許用戶指定文件存儲位置,請使用OpenFileDialog

+0

感謝您的解決方案:)但它在「Application.ExecutablePath」部分中出現錯誤。程序不會決定哪個「應用程序」。我嘗試過Microsoft.Office.Interop.Excel.Application.ExecutablePath,但仍然出現錯誤。 System.Windows.Forms.Application.ExecutablePath也不能正常工作。我該怎麼辦? – dnur

+0

嘗試'System.Reflection.Assembly.GetExecutingAssembly()。位置' – Samich

1

我會建議使用System.IO.Path.GetTempFileName()並將Excel文件複製到臨時文件。

使用Application.StartupPath屬性。

+0

感謝startuppath屬性幫了我很多:) – dnur

0

兩件事情:

如果你不介意MS GUI實現,嘗試打開文件對話框,讓你的用戶(如果合適的話)選擇正確的文件:

var openFileDialog1 = new OpenFileDialog(); 
openFileDialog1.InitialDirectory = "c:\\"; 
openFileDialog1.Filter = "xlsx files (*.xlsx)|*.xlsx|All files (*.*)|*.*"; 
openFileDialog1.FilterIndex = 1; 
openFileDialog1.RestoreDirectory = true; 

編輯: 然後使用openFileDialog1.Filename來獲取文件名。

OR

使用,如果該文件是始終在同一個關係目錄的相對路徑名:

StreamReader reader = new StreamReader("..\\'folder'\\'file'");

我發現,這兩種方法將總是工作之一;取決於我是否希望用戶選擇文件。

編輯: 一旦你有了文件名,使用Microsoft.Office.Interop.Excel命名空間就可以控制excel中的文件,如果需要的話。

希望這會有所幫助!

+0

謝謝,但我無法使用openfiledialog,因爲用戶可能沒有那個excel文件.. – dnur

+0

我以爲你說過是一個現有的Excel文件 – Bob2Chiv

+0

是的,但我有,而不是用戶。所以我想給我的程序設置中的用戶提供excel文件 – dnur

相關問題