我有一个面向. Net 6.0框架的项目,我正在尝试使用Microsoft. Office. Interop. Excel,因为我想运行在同一本地系统上存在的. xlsm文件中配置的Excel宏。关于Excel版本-我正在运行Microsoft 365(我不知道这如何翻译成Excel版本,以前在命名更显式)。我运行代码时遇到的错误如下所示:
[![在此输入图像说明][1]][1]
这是发生问题的代码(基本上是最后一行):
void RunMacro(string macroFilename)
{
Excel.Application xlApp = new Excel.Application();
Excel.Workbook xlWorkBook;
xlWorkBook = xlApp.Workbooks.Open(macroFilename);
xlApp.Visible = true;
xlApp.Run("Main");
}
为了在项目中包含Interop.Excel包,我尝试将其安装为NuGet包,因此在这种情况下,项目文件如下所示
<Project Sdk="Microsoft.NET.Sdk">
<PropertyGroup>
<OutputType>Exe</OutputType>
<TargetFramework>net6.0</TargetFramework>
<ImplicitUsings>enable</ImplicitUsings>
<Nullable>enable</Nullable>
</PropertyGroup>
<ItemGroup>
<PackageReference Include="DotNetCore.NPOI" Version="1.2.3" />
<PackageReference Include="ExcelDataReader" Version="3.6.0" />
<PackageReference Include="ExcelDataReader.DataSet" Version="3.6.0" />
<PackageReference Include="Microsoft.Office.Interop.Excel" Version="15.0.4795.1001" />
</ItemGroup>
</Project>
或者,我尝试使用"Add project reference"选项引用interop dll,因此下面是在这种情况下项目文件的外观:
<Project Sdk="Microsoft.NET.Sdk">
<PropertyGroup>
<OutputType>Exe</OutputType>
<TargetFramework>net6.0</TargetFramework>
<ImplicitUsings>enable</ImplicitUsings>
<Nullable>enable</Nullable>
</PropertyGroup>
<ItemGroup>
<PackageReference Include="DotNetCore.NPOI" Version="1.2.3" />
<PackageReference Include="ExcelDataReader" Version="3.6.0" />
<PackageReference Include="ExcelDataReader.DataSet" Version="3.6.0" />
</ItemGroup>
<ItemGroup>
<Reference Include="Microsoft.Office.Interop.Excel">
<HintPath>..\..\..\..\..\..\Windows\assembly\GAC_MSIL\Microsoft.Office.Interop.Excel\15.0.0.0__71e9bce111e9429c\Microsoft.Office.Interop.Excel.dll</HintPath>
</Reference>
</ItemGroup>
</Project>
然而,最终,屏幕截图中的错误仍然存在于两种情况下。是什么原因导致了这种情况?非常感谢任何帮助。
1条答案
按热度按时间bwleehnv1#
您需要安装相应版本的Office。这意味着对于Interop版本15.0.0.0,您应该安装Office 2013,其他版本的Office将无法工作。