我应该在 C# 中保持 excel 工作簿连接打开,还是每次需要添加新行时打开一个新连接?
Shall I keep excel workbook connection open in C# or open a new one every time I need to add a new row?
我已经实现了一个在后台下载文件的下载实用程序 thread.Now,我想实现将每个文件的下载结果导出到 excel sheet 的功能。我正在为这个 purpose.So 使用 Microsoft.Office.Interop.Excel 库,为此我创建了一个 excel 工作簿,并在 it.My 中做条目问题是我是否在开始时打开工作簿下载过程,并在过程完成后关闭工作簿,还是每次我想输入时都创建一个新的 excel 连接?请注意,下载可能需要很长时间。
使用 Interop
时要记住的一点是,您实际上是在后台创建一个 excel.exe
进程,然后使用 DCOM 来操作 运行 进程。
通常,这意味着当您第一次打开文件并且 Excel 不是 运行 时,加载需要时间。因此,如果您要进行增量更新,我建议在后台保持文件打开。
另请记住,Interops 已硬编码到您的目标 Office 版本,并且还需要安装 Office 才能运行。
就个人而言,我总是使用第 3 方库进行 Excel 操作,因为它们的性能比 Interop
程序集高得多,并且不需要在机器上安装 Office 的硬依赖性.
我成功使用的例子是:SpreadsheetGear and FlexCel
我已经实现了一个在后台下载文件的下载实用程序 thread.Now,我想实现将每个文件的下载结果导出到 excel sheet 的功能。我正在为这个 purpose.So 使用 Microsoft.Office.Interop.Excel 库,为此我创建了一个 excel 工作簿,并在 it.My 中做条目问题是我是否在开始时打开工作簿下载过程,并在过程完成后关闭工作簿,还是每次我想输入时都创建一个新的 excel 连接?请注意,下载可能需要很长时间。
使用 Interop
时要记住的一点是,您实际上是在后台创建一个 excel.exe
进程,然后使用 DCOM 来操作 运行 进程。
通常,这意味着当您第一次打开文件并且 Excel 不是 运行 时,加载需要时间。因此,如果您要进行增量更新,我建议在后台保持文件打开。
另请记住,Interops 已硬编码到您的目标 Office 版本,并且还需要安装 Office 才能运行。
就个人而言,我总是使用第 3 方库进行 Excel 操作,因为它们的性能比 Interop
程序集高得多,并且不需要在机器上安装 Office 的硬依赖性.
我成功使用的例子是:SpreadsheetGear and FlexCel