我正在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部分(工作簿)中的命名范围