保存文件EPPLUS后Excel恢复错误

时间:2018-11-21 05:33:13

标签: excel vb.net epplus

我正在VB.NET中使用(学习)EPPLUS。
我首先使用了空白excel表并保存了文件,并成功保存 成功
但是,当我尝试插入数据并将其保存到所需的Excel工作表(带有验证和公式的工作表)时,它不会保存文件。

与Excel表格相同 Office.Interop 保存完美。但是interop的写入速度较慢,所以我使用了EPPLUS。 / p>

以下是我的代码:

Dim a As String = "D:\project1\bin\Debug\pro1\NGSTR1.xlsx"
    Dim b As String = "C:\Users\admin\Desktop\NGSTR1.xlsx"

    Dim file = New System.IO.FileInfo(a)
    Dim file2 = New System.IO.FileInfo(b)



    Using pck As New ExcelPackage(file)
        Dim ws As ExcelWorksheet = pck.Workbook.Worksheets("b2b")
        ws.Cells("A5").LoadFromDataTable(dt, False) '-----dt has the data
        pck.Save()
        'pck.SaveAs(file2) '-------- This isn't working either
End Using

处理2-3分钟后,它会显示错误

我得到的错误如下:

  

托管调试助手“ ContextSwitchDeadlock”:

'CLR在60秒钟内无法从COM上下文0x1bd79550转换到COM上下文0x1bd79428。拥有目标上下文/公寓的线程很可能要么执行非泵送等待,要么处理很长时间运行的操作而不泵送Windows消息。这种情况通常会对性能产生负面影响,甚至可能导致应用程序变得无响应或内存使用量随时间不断累积。为避免此问题,所有单线程单元(STA)线程都应使用泵送等待原语(例如CoWaitForMultipleHandles),并在长时间运行的操作中定期泵送消息。'

有时我会得到:

  

System.InvalidOperationException:

保存文件D:\ project1 \ bin \ Debug \ pro1 \ NGSTR1.xlsx时出错

内部异常:

  

ArgumentException:

列号超出范围

因此,我在互联网上搜索并在GitHub上找到了文章
pck.DoAdjustDrawings = False之前的行pck.save

现在文件已保存,但是当我打开excel时,它会显示恢复消息框。
在对话框的“是”中,我收到消息

  

已删除的记录:/xl/workbook.xml部分(工作簿)中的命名范围

0 个答案:

没有答案