参数异常:路径中含有非法字符。错误

8
我正在以下代码中收到一个ArgumentException:
```csharp ```
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。

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

我做错了什么?我在服务器上部署了这个。


1
C#规范 字符串字面量。顺便问一下,为什么要两次初始化字符串filePath? - Steve
你将一个字面字符串赋给filePath,然后用Path.Combine的结果覆盖它。你从哪里获得strPath - yoozer8
另外,您在 Stack Overflow 上的哪个问题/答案中获取了这段代码?能否提供链接?这可能有助于我们更好地理解上下文。 - yoozer8
非常抱歉犯了一个大错误。我再次编辑了我的帖子,请检查一下。 - user2144293
@user2144293 同时,尽量避免手写复制你的代码。如果这样做出错了,你会得到错误的反馈。请尝试使用复制/粘贴。 - Sam I am says Reinstate Monica
显示剩余5条评论
4个回答

11

代码的作用是获取你的工作目录(与代码相关联的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";


3
您的代码应该是:

你的代码应该是:

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

您需要使用双反斜杠。


0
代码有两个问题, 首先
string filePath="C:\somename.xls";

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

第二点

filePath 包含根路径 C:\\。使用 Path.Combine 将只返回 filePath,无法进行组合。


0

你的主要问题在于 startPath 参数。

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

如果你追踪你的代码,在文件名中你会看到一个非法的坏符号字符


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接