8

次のコードから ArgumentException を取得しています。

string strPath="C:\somename.xls";
startPath=System.IO.Path.GetDirectoryName(System.Diagnostics.Process.GetCurrentProcess().MainModule.FileName);
filePath = System.IO.Path.Combine(startPath, strPath);

このコードは Stack Overflow で見つけました。リンク: C#: 保護されたワークシートを別の Excel ファイルにコピー する それが何であるか正確にはわかりません。それが何であるか教えてください。このコードはexeに組み込まれています。

最後に、あるワークシートを別のファイルにコピーする必要があります。

私は何をしているのですか?これをサーバーにデプロイします。

4

4 に答える 4

10

そのコードが何をしているように見えるかは、作業ディレクトリ(exeコードに関連付けられている場所)を取得し、それを結合することです"C:\\somename.xls"(これは意味がありません)。

あなたは次のようなことを意図していたかもしれないと思います

string strPath=@"somename.xls";

アプリケーションを実行していると仮定します

"C:\Users\owner\documents\visual studio 2012\Projects\ConsoleApplication1\ConsoleApplication1\bin\Debug"

そのコードが行うことはに設定さfilePathれています

"C:\Users\owner\documents\visual studio 2012\Projects\ConsoleApplication1\ConsoleApplication1\bin\Debug\somename.xls"

私が最初に見たのは

string filePath="C:\somename.xls";

\他の文字を判別するための特殊文字です。たとえば'\n'、改行です。 '\\'実際のバックスラッシュです。

だから、あなた\は別の人と一緒に逃げたい\

string filePath="C:\\somename.xls";

または、前に a を付けてリテラル文字列に@します。

string filePath=@"C:\somename.xls";

于 2013-03-12T18:13:11.490 に答える
3

コードは次のようになります。

string filePath = "C:\\somename.xls"

二重のバックスラッシュが必要です。

于 2013-03-12T18:13:26.833 に答える
0

コードの2つの問題、

初め

string filePath="C:\somename.xls";

\他の文字を判別するための特殊文字です。たとえば'\n'、改行です。 '\\'実際のバックスラッシュです。

2番

filePathルート パス、 が含まれていますC:\\Path.Combineそのまま戻っfilePathてくるので、合体はできません。

于 2013-03-12T18:22:18.140 に答える
0

あなたの主な問題はstartPathパラメータにあります。

System.Diagnostics.Process.GetCurrentProcess().MainModule.FileName

コードをトレースするFileNameと、不正なシンボル文字 witch is illegal が表示されます

于 2013-12-09T17:52:23.873 に答える