Проблемы Слэша и побега в C#
Я хочу записать некоторые данные в Excel на C# с помощью COM, но у меня проблема с сохранением. Давайте посмотрим код:
-
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");
StreamWriter sw = new StreamWriter("c:/users/amare/desktop/file.txt");
sw.WriteLine("foo-bar");
sw.close();
Это всегда хорошо работает. Поэтому я хочу знать, почему этого не происходит в этот раз. По-видимому, C# неправильно избегает пути в 1).
2 ответа:
По-видимому,
workSheet.SaveAs()
делает свою собственную проверку и исправление пути. Таким образом, вы (по праву) наказаны за использование недопустимого формата. Этот формат обычно принимается, но "обычно" - это не то же самое, что "всегда".
Я попробовал ваш путь и, конечно, он не работает с сообщением о том, что путь недействителен или не доступен для записи. Я также попытался записать файл в подпапку Documents (где предоставляется разрешение на запись), но снова появляется та же ошибка. Таким образом, это определенно проблема внутри синтаксического анализатора взаимодействия Excel. Я думаю, что в windows вы должны избегать этого разделителя путей.
Если вы используете дословные строки, определенные префиксом строки с
@
charworkSheet.SaveAs(@"c:\users\amare\sub.xls");
Все работает, как и ожидалось.