System.ArgumentException:path中的非法字符。 错误
我从下面的代码得到一个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#:将受保护的工作表复制到另一个excel文件我不完全知道它是什么。 请告诉我是什么 这个代码我正在build设成一个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。
string filePath=@"C:\somename.xls";
你的代码应该是:
string filePath = "C:\\somename.xls"
你需要双反斜杠。
代码有两个问题,
第一
string filePath="C:\somename.xls";
\
是一个特殊字符,用于确定其他字符。 比如'\n'
是一个换行符。 '\\'
是实际的反斜杠。
第二
filePath
包含一个根pathC:\\
。 Path.Combine
只会返回filePath
,不能合并。
你的主要问题是在startPath参数。 System.Diagnostics.Process.GetCurrentProcess()。MainModule.FileName如果你跟踪你的代码在FileName你会看到一个坏的符号字符女巫是非法的