0

次の方法でExcelファイルを読み取っています。

string path = @"C:\Users\myUserName\inputfile.xlsx";
Excel.Application app = new Application();
Excel.Workbook workbook = app.Workbooks.Open(path, 0, true, 5, "", "", true, Excel.XlPlatform.xlWindows, "\t", false, false, 0, true, 1, 0);

ハードコーディングされた絶対パスの代わりに相対パスを指定できる方法があるかどうか疑問に思っていました。私が念頭に置いているのは、inputfile.xlsxを同じディレクトリに置き、次のようなことをすることです...

string path = @"inputfile.xlsx";  

しかし、「COMException unhandled..」、「inputfile.xlsx not found」が表示されます

4

3 に答える 3

2

次のコードを使用して、.exeの場所を取得します。</ p>

string localPath = System.IO.Path.GetDirectoryName
‫‪(System.Reflection.Assembly.GetExecutingAssembly().Location‬‬)
于 2012-08-20T16:06:27.887 に答える
1

疑問がある場合は、Directory.GetCurrentDirectory()を使用して、現在のディレクトリが何であるかを理解できます。

Excelがファイルを見つけられない場合は、現在のディレクトリが何であるかを誤解している可能性が非常に高くなります。GetCurrentDirectory()によって返されるディレクトリを基準にしたパスを作成します。

参考までに、アプリをスタンドアロン、デバッガー、およびMSテスト単体テストで実行すると、すべて異なる現在のディレクトリが設定されます。その理由は、実行可能ファイルがそれぞれ異なるディレクトリから開始されるためです。

于 2012-08-20T16:06:06.417 に答える