2013-07-26 2 views
0

может кто-нибудь помочь мне с этой ошибкой ?? Я пытался спасти первенствует файл, используя EPPlusсохранить excel с помощью EPPlus

[IOException: The process cannot access the file 'C:\Users\Julian\Downloads\EmployeeMaster.xls' because it is being used by another process.] 

вот мой код:

Dim conn As New ConnectionVB 
Dim newfile As FileInfo = NewFileInfo("C:\\Users\\Julian\\Downloads\\EmployeeMaster.xls") 
Using p As ExcelPackage = New ExcelPackage(newfile) 
    SetWorkBookProperties(p) 
    conn.connect() 

    Dim ws As ExcelWorksheet = CreateSheet(p, "EmnployeeMaster") 
    Dim dt As New DataTable 
    Dim connString As String 
    connString = "Select * from EmployeeMaster" 
    dt = conn.openDataTable(connString) 

    Dim rowIndex As Integer 
    rowIndex = 2 

    CreateHeader(ws, rowIndex, dt) 
    CreateData(ws, rowIndex, dt) 

    Dim bin As Byte() 
    bin = p.GetAsByteArray() 
    Dim path As String 
    path = "C:\\Users\\Julian\\Downloads\\EmployeeMaster.xls" 
    File.Delete("C:\\Users\\Julian\\Downloads\\EmployeeMaster.xls") 

    Dim stream As Stream = File.Create(path) 
    File.WriteAllBytes(path, bin) <- I got the error here 
    Start(path) 
    stream.Close() 
End Using 

Appriciate вся помощь/консультации с этой ошибкой

С уважением Siekh

+0

Я должен упомянуть две потенциальные проблемы: 1. Насколько я знаю, EPPLUS не может открывать файлы xls, только файлы xlsx. 2. Вы открыли файл в Excel во время запуска вашей программы? Если это произойдет, EPPLUS не удастся. Файл должен быть закрыт для открытия EPPlus + 3. Еще один момент: вы используете один и тот же шаг времени в разделе использования - это, безусловно, не удастся. Я очень удивлен, что вызовы File.Delete не вызывают ошибку. –

+0

В качестве последнего примечания: ваш код выглядит ... искаженным для меня. Вы правильно не использовали EPPLus - первая секция в порядке, но была ли цель раздела после «in = p.GetAsByteArray()»? Если вы хотите сохранить данные в листе, используйте метод Epplus .fromDataTable –

ответ

0

Как из вашей ошибки показывает: файл EmployeeMaster.xls используется другим процессом.

Ваш код DRYRUN:

В файле EmployeeMaster.xls вы сделаете еще одно новое имя листа в EmnployeeMaster и затем создать заголовок, и данные в этом листе. Проблема возникает при записи в файл. вам нужно просто сохранить WorkSheet, выполнив. , потому что просто откройте свой .xls-файл с помощью EPPlusPackage, а затем по коду. Добавьте свой собственный лист в .xls-файл и просто сохраните.

p.Save(); // you need to save this temporary sheet. 

Проблемы могут быть:

  • EPPLUS не может открывать файлы XLS, XLSX только файлы.
  • Почему вы удаляете файл. Решение: вы можете переименовать, а затем переместить.

  • EPPlus поместилось при создании экземпляра объекта для ExcelPackage (с тем же пути)

0

две проблемы:

  • EPPlus не поддерживает XLS файлов.
  • Для отладки, почему файл используется, я рекомендую использовать «процесс-проводник» SysInternal, вы можете найти его here.