在常规的非 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 全局变量似乎是一个严重的障碍。
在常规(非 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();
}
}
以下是我长期以来的开发攻略。我将 Excel 应用程序分为两个大的 classes:
(a) Excel 不必存在:该应用程序甚至可以 运行 在 OS 中,例如 Linux,等等。我使用 3rd。派对 Excel 个图书馆。在 Windows 中,我利用了 OpenXML 或更好的资源:ClosedXML。
(b) Office 应用程序,例如插件:Interop。
但是,对于由多个应用程序处理的相当复杂的工作表,我决定最好让 Excel 自己完成所有工作。我有典型的加载项,但正在将使用 ClosedXML 的常规应用程序移植到 Interop。正如您在下面的 post 中看到的那样,一些同事在走这条路时遇到了麻烦。缺少的 class 全局变量似乎是一个严重的障碍。
在常规(非 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();
}
}