我想用COM在C#中向Excel中写入一些数据,但保存时遇到问题。让我们看看代码:
workSheet.SaveAs("c:/users/amare/sub.xls");
上面的代码将导致一个错误:
"Microsoft Excel无法打开文件c:\//users/amare/sub.xls。"
但下面的代码运行良好:
workSheet.SaveAs("c:\users/amare/sub.xls");
workSheet.SaveAs(@"c:usersamaresub.xls");
现在我对这种情况很困惑。我知道2)和3)是绝对正确的,但我习惯于写这样的代码:
StreamWriter sw = new StreamWriter("c:/users/amare/desktop/file.txt");
sw.WriteLine("foo-bar");
sw.close();
这总是很好用的。所以我想知道为什么这次没有。显然,C#在1)中错误地转义了路径。
显然workSheet.SaveAs()
自己对路径进行验证和修复。因此,你(理所当然地)因使用无效格式而受到惩罚。通常接受该格式,但"通常"与"始终"不同。
我已经尝试过您的路径,但它确实失败了,并显示一条消息,说明路径无效或不可写。我还尝试将文件写入Documents子文件夹(授予写入权限的子文件夹)中,但同样的错误再次出现。因此,这无疑是Excel互操作语法分析器内部的一个问题。我认为,在windows中,应该避免使用此路径分隔符。
如果使用逐字逐句定义的字符串,则在字符串前面加上@
字符
workSheet.SaveAs(@"c:usersamaresub.xls");
所有工作均按预期进行。