0

有人可以帮我解决这个错误吗?我尝试使用 EPPlus 保存 excel 文件

[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所有帮助/建议与此错误

问候谢赫

4

2 回答 2

0

正如您的错误所示:EmployeeMaster.xls 文件正在被另一个进程使用。

您的代码 DryRun:

在您的 EmployeeMaster.xls 文件中,您将另一个新工作表名称命名为 EmnployeeMaster,然后在此工作表中创建 Header 和 Data。写入文件时出现问题。您必须通过执行来保存 WorkSheet。 因为只需在 EPPlusPackage 的帮助下打开您的 .xls 文件,然后通过代码将您的自定义工作表添加到 .xls 文件中并保存即可。

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

问题可能是:

  • EPPLUS 无法打开 xls 文件,只能打开 xlsx 文件。
  • 为什么要删除文件。解决方法:可以重命名,然后移动。

  • 当您为 ExcelPackage 实例化对象时,EPPlus 会保留您的文件(具有相同的路径)

于 2013-07-26T06:55:41.820 回答
0

两个问题:

  • EPPlus 不支持 xls 文件。
  • 为了调试为什么使用该文件,我推荐使用 SysInternal 的“进程资源管理器”,你可以在这里找到它。
于 2016-12-18T09:24:23.650 回答