System.ArgumentException:路径中的非法字符。错误

时间:2013-03-12 18:12:22

标签: c# excel

我从以下代码中获取了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#:Copy protected worksheet to another excel file  我不知道它到底是什么。请告诉我它是什么。这段代码我正在构建一个exe。

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

我做错了什么?我在服务器中部署它。

4 个答案:

答案 0 :(得分:5)

该代码似乎在做什么,它是否会获取您的工作目录(与您的代码关联的exe所在的位置),并将其与"C:\\somename.xls"结合使用(这没有意义。)< / p>

我想你可能想要像

这样的东西
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";

答案 1 :(得分:2)

您的代码应为:

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

你需要双反斜杠。

答案 2 :(得分:0)

代码有两个问题,

<强>第一

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

\是一个特殊字符,用于确定其他字符。例如'\n'是换行符。 '\\'是实际的反斜杠。

<强>第二

filePath包含根路径C:\\。 <{1}}只会返回Path.Combine,然后才会合并。

答案 3 :(得分:0)

您的主要问题是startPath参数。

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

如果你追踪你的代码,在FileName中你会看到一个坏的符号字符巫婆是非法的