第一步:添加引用 程序集—>扩展
C:\Program Files (x86)\Reference Assemblies\Microsoft\Framework\.NETFramework\v4.8
也可nuget加载interope,缺点:数据量大时速度慢。
一、Microsoft.Office.Interop.Excel
的本质:COM 互操作程序集
Excel 是微软基于 COM(Component Object Model) 技术开发的桌面软件。COM 是一种跨语言的二进制接口标准,允许不同语言的程序(如 C++、.NET)与 COM 对象(如 Excel 的功能模块)交互。
但 .NET 无法直接调用 COM 对象(因为 COM 基于接口而非 .NET 的类型系统),因此微软提供了 主互操作程序集(Primary Interop Assembly, PIA),即 Microsoft.Office.Interop.Excel.dll
。它的作用是:
- 将 Excel 的 COM 接口(如
_Application
、_Workbook
)包装成 .NET 可识别的类和接口(位于Microsoft.Office.Interop.Excel
命名空间)。 - 处理 .NET 与 COM 之间的类型转换(如将 .NET 的
string
转为 COM 的BSTR
,将 COM 的VARIANT
转为 .NET 的object
)。
二、using Excel = ...
的作用:命名空间别名
using Excel = Microsoft.Office.Interop.Excel;
是一条 命名空间别名指令,作用是为长命名空间 Microsoft.Office.Interop.Excel
定义一个简短的别名 Excel
。例如:
csharp
// 未使用别名时,需完整写命名空间
Microsoft.Office.Interop.Excel.Application excelApp = new Microsoft.Office.Interop.Excel.Application();
// 使用别名后,代码更简洁
Excel.Application excelApp = new Excel.Application();
这行代码不改变技术本质,只是语法糖,让代码更易读。
三、底层交互流程:.NET 通过 COM 操作 Excel
当你使用 Excel.Application
(对应 COM 的 Application
对象)创建 Excel 实例时,底层流程如下:
- .NET 运行时通过 RCW(Runtime Callable Wrapper,运行时可调用包装器&#