我从以下代码获取ArgumentException:

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

我在堆栈溢出中找到了此代码。
关联:
C#:Copy protected worksheet to another excel file
我不知道这是什么。请告诉我这是什么。我正在将此代码构建为exe。

最后,我需要将一个工作表复制到另一个文件。

我在做什么错?我将其部署在服务器中。

最佳答案

该代码似乎在做什么,它是获取您的工作目录(与代码相关联的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";

或通过在其前面放置@使其成为文字字符串。
string filePath=@"C:\somename.xls";

关于c# - System.ArgumentException : Illegal characters in path.错误,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/15368908/

10-12 00:44