我从以下代码中获取了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。
最后,我需要将一个工作表复制到另一个文件。
我做错了什么?我在服务器中部署它。
答案 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
中你会看到一个坏的符号字符巫婆是非法的