在常规的非 Office 应用程序中使用 Interop 的正确方法是什么?

What is the proper way to use Interop in a regular, non Office, application?

以下是我长期以来的开发攻略。我将 Excel 应用程序分为两个大的 classes:

(a) Excel 不必存在:该应用程序甚至可以 运行 在 OS 中,例如 Linux,等等。我使用 3rd。派对 Excel 个图书馆。在 Windows 中,我利用了 OpenXML 或更好的资源:ClosedXML。

(b) Office 应用程序,例如插件:Interop。

但是,对于由多个应用程序处理的相当复杂的工作表,我决定最好让 Excel 自己完成所有工作。我有典型的加载项,但正在将使用 ClosedXML 的常规应用程序移植到 Interop。正如您在下面的 post 中看到的那样,一些同事在走这条路时遇到了麻烦。缺少的 class 全局变量似乎是一个严重的障碍。

https://social.msdn.microsoft.com/Forums/en-US/cf4b0ca8-9c3b-41df-a24a-b2c195eaee4e/cannot-access-globals-object-from-c-console-application?forum=exceldev

在常规(非 AddIn、非 Office)应用程序中使用 Interop 的正确方法是什么?

TIA

答案如下:

using Microsoft.Office.Interop.Excel;

public class InteropExcel
{
  private Application excelApp;
  private Workbook    workbook;
  private Worksheet   worksheet;

  internal void createExcelFile(string targetFilepath)
  {
        excelApp         = new Application();
        excelApp.Visible = false;

        workbook         = excelApp.Workbooks.Add();
        worksheet        = excelApp.ActiveSheet;

        workbook.SaveAs(targetFilepath);
        excelApp.Quit();
  }
}