Не удалось получить доступ к файлу C# excel SaveAs при сохранении

Попытка сохранить рабочий лист Excel программно как уникальное имя файла в цикле.

    private static DateTime csvtime = DateTime.Now;
    private static string time = csvtime.ToString("HH:mm:ss");
    private static string Path = @"C:\users\User\desktop\MonetaryEntry_"+time+".csv";
    mySheet = (Excel.Worksheet)myBook.Worksheets[1];


mySheet.SaveAs(Path, Microsoft.Office.Interop.Excel.XlFileFormat.xlCSV);

Это не удается со следующей ошибкой

Произошло необработанное исключение типа «System.Runtime.InteropServices.COMException» в MonetaryEntryFormatting.exe.

Дополнительная информация: Не удалось получить доступ к файлу. Попробуйте одно из следующих действий:

• Убедитесь, что указанная папка существует.

• Убедитесь, что папка, содержащая файл, не доступна только для чтения.

• Убедитесь, что имя файла не содержит ни одного из следующих символов: ‹ > ? [ ] : | или *

• Убедитесь, что имя файла/пути не содержит более 218 символов.

однако, когда я меняю строку пути на

private static string path = "@C:\users\user\desktop\MonetaryEntry_.csv";

это решает.

Цель состоит в том, чтобы повторять цикл, каждый раз сохраняя уникальный файл *.csv. Каждый раз будет создаваться неопределенное количество файлов .csv.

несколько заметок;

запись на рабочий стол учетной записи пользователя, в которой я сейчас выполняю всю работу. Если это необходимо, я копирую файл на рабочий стол и вставляю его под другим именем и работаю оттуда.

Я чувствую, что могу упустить что-то довольно простое, поскольку обычно это проблема.


person kotlx    schedule 16.07.2015    source источник
comment
Вы не можете использовать : в имени файла, используйте другой символ в строке формата.   -  person Alex K.    schedule 16.07.2015
comment
Маловероятно, если вы зацикливаетесь, что каждое значение времени будет уникальным для каждого цикла.   -  person Alex K.    schedule 16.07.2015


Ответы (1)


private static DateTime csvtime = DateTime.Now;
private static string time = csvtime.ToString("HH_mm_ss");
private static string Path = @"C:\users\User\desktop\MonetaryEntry_"+time+".csv";
mySheet = (Excel.Worksheet)myBook.Worksheets[1];
mySheet.SaveAs(Path, Microsoft.Office.Interop.Excel.XlFileFormat.xlCSV);

это сработает, измените тостринг. : не является символом, разрешенным в пути. (посмотрите на 3-е предложение ошибки)

person Daneau    schedule 16.07.2015
comment
Ничего себе, я чувствую себя duuuumb. Спасибо! - person kotlx; 16.07.2015