【问题标题】:In C# Excel Interop whats Difference between new Excel.Workbook() and default(Excel.Workbook)在 C# Excel 互操作中 new Excel.Workbook() 和 default(Excel.Workbook) 的区别
【发布时间】:2025-11-24 08:20:05
【问题描述】:

在 C# Excel 互操作中,声明 new Excel.Workbook()default(Excel.Workbook) 有什么区别。

例子:

Microsoft.Office.Interop.Excel.Workbook objExcelWbk = new Excel.Workbook(); 
Microsoft.Office.Interop.Excel.Workbook objExcelWbk = default(Excel.Workbook);

当我使用Microsoft.Office.Interop.Excel.Workbook objExcelWbk = new Excel.Workbook();时,它给了我错误Retrieving the COM class factory for component with CLSID {00020819-0000-0000-C000-000000000046}

但是当我使用Microsoft.Office.Interop.Excel.Workbook objExcelWbk = default(Excel.Workbook); 时,我的脚本运行良好。

每种方法的使用指南是什么?又有什么区别?

【问题讨论】:

  • new Excel.Workbook() 实际上创建了一个Workbook 类的实例。 default(Excel.Workbook) 返回 null,因为这是引用类型的 默认 值。
  • @erdinger 如何创建一个不会抛出错误的工作簿对象引用未设置为对象的实例

标签: c# com-interop excel-interop


【解决方案1】:

您不能以这种方式创建工作簿。通常的做法是

var objExcelApp = new Excel.Application();
var objExcelWbk = objExcelApp.Workbooks.Add(); 

https://msdn.microsoft.com/en-us/library/ms173186

【讨论】:

  • 如何打开 Excel 工作簿?
【解决方案2】:

您使用默认值显式实例化工作簿,而不是通过默认构造函数实例化 Excel 工作簿。

default 是一个关键字,文档可以在这里找到:

https://msdn.microsoft.com/en-us/library/xwth0h0d.aspx

【讨论】: