C# C语言中的斜杠和转义问题#

C# C语言中的斜杠和转义问题#,c#,excel,escaping,slash,C#,Excel,Escaping,Slash,我想用COM在C#中编写一些数据到Excel,但在保存时遇到了一个问题。让我们看看代码: 上述代码将导致错误: “Microsoft Excel无法打开文件c://users/amare/sub.xls。” 但下面的代码可以正常工作: 现在我对这种情况很困惑。我知道2)和3)是绝对正确的,但我习惯于编写类似1)的代码: 这总是很好用的。所以我想知道为什么这次没有。显然,C#在1)中错误地逃逸了路径 我尝试了您的路径,但确实失败了,并显示一条消息,说明该路径无效或不可写。我还尝试在Docum

我想用COM在C#中编写一些数据到Excel,但在保存时遇到了一个问题。让我们看看代码:

  • 上述代码将导致错误:

    “Microsoft Excel无法打开文件c://users/amare/sub.xls。”

    但下面的代码可以正常工作:

  • 现在我对这种情况很困惑。我知道2)和3)是绝对正确的,但我习惯于编写类似1)的代码:


    这总是很好用的。所以我想知道为什么这次没有。显然,C#在1)中错误地逃逸了路径

    我尝试了您的路径,但确实失败了,并显示一条消息,说明该路径无效或不可写。我还尝试在Documents子文件夹(授予写入权限的地方)中写入文件,但同样的错误再次出现。因此,这无疑是Excel互操作解析器内部的一个问题。我认为,在windows中,应该避免使用此路径分隔符

    如果使用已定义的前缀将字符串加上
    @
    字符

    workSheet.SaveAs(@"c:\users\amare\sub.xls");
    

    一切正常

    显然
    工作表。SaveAs()
    自行验证和修复路径。因此,您(理应)因使用无效格式而受到惩罚。该格式通常被接受,但“通常”与“始终”不同。

    “c:/users”不是有效的Windows路径。如果从run启动此路径“c:/users”,它会工作,因此它是有效的路径。当正向斜杠用于本地路径时,人们会讨厌它。本地路径-反斜杠。Web路径-正斜杠。@HatSoft-
    工作表.SaveAs()
    在这一点上不同意您的意见。这里有最后一个字,不是你要的,但是也许你想在处理文件路径时考虑Soal.iO.PATH类。谢谢你复制这个问题。我将使用@char。@henkholtman,你像往常一样是对的,但是
    SaveAs
    给出的错误消息有点不清楚。因此,我刚刚尝试测试它是否与写入用户文件夹根目录所需的权限有关。
    workSheet.SaveAs("c:\\users/amare/sub.xls");
    
    workSheet.SaveAs(@"c:\users\amare\sub.xls");
    
    StreamWriter sw = new StreamWriter("c:/users/amare/desktop/file.txt");
    sw.WriteLine("foo-bar");
    sw.close();
    
    workSheet.SaveAs(@"c:\users\amare\sub.xls");