C# - нет доступа к созданному файлу, файл используется другим процессом. Как поправить?

  • Автор темы Автор темы Voland700
  • Дата начала Дата начала

Voland700

Новичок
Регистрация
29.01.2024
Сообщения
16
Реакции
1
Баллы
3
Процессе написания шаблона парсера контента, используется свой C# - код, для создания Excel – файла,

C#:
Развернуть Свернуть Копировать
FileInfo file = new FileInfo(project.Directory + "/data.xlsx");
if (file.Exists)
{
    project.SendInfoToLog("Файл существует, пеерсоздание", true);
    file.Delete();
    file = new FileInfo(project.Directory + "/data.xlsx");
    file.Create();
}else{
    project.SendInfoToLog("Файл не существует, создадим!", true);
    file = new FileInfo(project.Directory + "/data.xlsx");
    file.Create();
}

var package = new ExcelPackage(file);
ExcelWorksheet Table = package.Workbook.Worksheets[1];

Файл создается успешно, однако последующий код останавливается, с ошибкой:

Выполнение действия CSharp OwnCode. Процесс не может получить доступ к файлу "E:\_zeno\parser\data.xlsx", так как этот файл используется другим процессом.

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

Прошу совета:
Как поправить? Или может быть есть другие способы создания Excel- файла, для последующей работы с ним?
 
Почему-то нет, не создает.
При отсутствии data.xsls - файла ошибка:
что бы не мучать себя и других, проверь сразу, если ты создашь пустой файл ручками (ну прям вот как текствовик пустой, без структуры xlsx, которая обязана быть в таких файлах), сможешь ли ты его указать для ExcelPackage и не будет ли ошибка....
а то нагородишь сейчас... а оно все равно на пустом файле работать не будет.... :bn:
 
а что new ExcelPackage сам не создаст файл ?
Все благодарю за подсказку, проблема решена. New ExcelPackage действительно сам создаёт файл.
Благодаря Вашей подсказке понял где ошибка.
 
Все благодарю за подсказку, проблема решена. New ExcelPackage действительно сам создаёт файл.
Благодаря Вашей подсказке понял где ошибка.
После создания файл надо закрывать file.Create().Close();
 
Пробывал. Не работает.
В моем случае, file - создается классом FileInfo, у данного класса не метода .Close().
Тогда надо проверить реализует ли класс FileInfo интерфейс iDisposable и если да, то работу с этим классом осуществлять в конструкции using, что бы объект нормально работу завершал
 

Кто просматривает тему: (Всего: 0, Пользователи: 0, Гости: 0)