我希望在我的.NET Core 3.1 API中有一个端点,在那里我打开一个模板Excel文件,编辑几个单元格,然后将编辑后的Excel文件作为流返回。
我原以为我会使用Microsoft.Office.Interop.Excel,但当通过Nuget包添加引用时,我收到了以下错误:
Could not load file or assembly 'office, Version=15.0.0.0, Culture=neutral, PublicKeyToken=71e9bce111e9429c'
在将其添加为COM引用后,我得到以下错误:
Retrieving the COM class factory for component with CLSID {00020819-0000-0000-C000-000000000046} failed due to the following error: 80040154 Klasse is niet geregistreerd (0x80040154 (REGDB_E_CLASSNOTREG)).
我也不想保存编辑后的模板,它应该保存为流,这样我就可以返回Excel流。
有人知道我想做什么是否可能吗?是的,怎么做?
asp.net核心是独立于平台的,如果没有各种配置,它将无法很好地与Windows程序集配合使用。现在,我相信你可以在3.1中使用它,也许如果你像这个答案中解释的那样使用COMReferences:.NET core 3.0和MS Office Interop
但我在asp.net核心应用程序中使用interop所做的是将目标框架改为.net5。
如果您能够使用net5.0
,那么将其添加到.csproj文件中,它应该可以工作:
<TargetFramework>net5.0-windows</TargetFramework>
<UseWPF>true</UseWPF>
在netcoreapp3.1
中只包含<UseWPF>true</UseWPF>
也可以,但我还没有测试过。