2015-12-30 29 views
6

私のExcelファイルのファイルパスを取得しようとしています。しかし、私はそうすることができません。シート名のExcelファイルのFilePathを取得

ファイルが文書である/ Visual Studioの2013 /プロジェクト/プロジェクト名/ a.xlsx

string path = Path.Combine(HttpContext.Current.Server.MapPath("~/"),"a.xlsx"); 
string SheetName="Sheet1"; 

それはそれを行うには間違った方法ですか、それは正しい方法は何ですか?

+2

あなたの質問は、私の意見では詳細が欠けています。 1 - 'Document/Visual Studio 2013/Project/ProjectName'はWebプロジェクトのルートです。 2 - あなたのコードスニペットは、httpリクエストに応答するこのWebプロジェクトのコンテキストで実行されます。 3 - 失敗するコードは何ですか?おそらく何か 'path'を開こうとしていますが、あなたのコードスニペットには欠けています。 4 - 'path'ローカル変数の値を調べようとしましたか? –

+0

@Frederic 1はい、私のプロジェクトのルートですが、Webプロジェクトではありません。 2.私は自分のファイルのパスに電話しています。失敗したコードはスニペットで表示されます。4.質問4で何を言おうとしていますか? –

+0

このプロジェクトは[post](http://stackoverflow.com/questions/34517107)に添付されている[Example](http://tbf.me/a/Bwi3Ap)として使用できます。私は彼と同じことをしていますが、それはほぼ同じです。 –

答えて

1

これは私にとってより良い答えです。

C:\Users\AJ1110\Documents\Visual Studio 2013\Projects\Proj\Proj 

に保存し、

Program.csの

string pathfile = @"..\..\a.xlsx"; 
string sheetName = "Whatever_SheetName_IS!!!"; 

にこれはあなたの問題を解決する可能性があります

良いです。

1

HttpContext.Currentは、Webコンテキストの外部では機能しません。

プロジェクトがコンソールまたはWindowsプログラム内で実行されている場合は、HttpContext.Currentで動作しません。 MapPathは、Webパスをファイルシステムパスに変換するためのものです。 ~/は、WebアプリケーションのルートWebパスを指定するための.Netの規則です。

ファイルが格納されているフォルダを解決する方法については、どのような要件が必要かを明示する必要があります。

多分、それをいくつかの設定ファイル(例ではプロジェクトの設定プロパティタブを使って)に入れ、そこから取得してください。

編集:あなたが実行するフォルダにXLファイルを模索する必要があるようなので、

は、この質問にあなたのコメントから、それが見えます。

アプリケーションの使用状況に応じて、これを達成するにはいくつかの方法があります。

たとえば、this questionをチェックします。

+0

1.私はあなたの言うことをかなり得ています。私がこのプロジェクトをコピーしたときにどこでもマシンを変えなければならない場合は、これを何度も何度も変更する必要があります。だからこそ、私はパスを取得してそれを継続しようとしているのです –

+0

2.設定プロパティタブを使用するとどういう意味ですか?私がここで何をしようとしているのか理解していることを願っています。あなたや他の人に質問がある場合は教えてください –

+0

2.プロジェクトプロパティから(ソリューションエクスプローラでプロジェクトを右クリック)、設定タブを選択します。設定にアクセスするための設定ファイルとそれに対応するコードファイルの追加を求めます。しかし、あなたの要件が実行中のフォルダ内のファイルを検索することであれば、これはあまり役に立ちません。私はこの回答を編集していくつかのヘルプを追加します。 –

0

あなたのプロジェクトはWebではないので、ビルドプロセスが実行可能ファイルやアセンブリなどを生成する何らかの出力が必要です。Excelのビルドアクションをコンテンツ(詳細はhere)に入れてそれを取得するには、このベースパス:

System.Reflection.Assembly.GetExecutingAssembly().Location 

あなたの出力は、開発環境やExcelの必見外で実行する必要がありますので、(より正確であること、または実行中のアセンブリ)あなたの実行可能ファイルへの相対的な観点から考えることが重要ですまだアクセス可能です。

正確な実行アセンブリを取得することは、tricky in some scenariosです。