【问题标题】:Open Excel file, edit and save as stream in .NET CORE 3.1在 .NET CORE 3.1 中打开 Excel 文件,编辑并另存为流
【发布时间】:2021-09-02 00:31:23
【问题描述】:

我想在我的 .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 流。

有人知道我想做什么,是的,怎么做?

【问题讨论】:

  • 虽然 .net 核心支持 Com,但您应该真正考虑一下其含义:Web 服务中的 Office 是一个许可地狱,Office 将因 Web 应用程序触发的多种原因(例如,当一些更新或许可证弹出窗口显示在 excel 中)

标签: c# excel .net-core


【解决方案1】:

asp.net 核心是独立于平台的,并且在没有各种配置的情况下无法很好地与 Windows 程序集一起使用。现在我确信你可以让它在 3.1 中工作,也许如果你按照这个答案的解释弄乱了 COMReferences:.NET core 3.0 and MS Office Interop

但我在 asp.net 核心应用程序中使用互操作时所做的是将目标框架改为 .net5。

如果您能够使用net5.0,则将其添加到 .csproj 文件中,它应该可以工作:

<TargetFramework>net5.0-windows</TargetFramework>
<UseWPF>true</UseWPF>

netcoreapp3.1 中包含&lt;UseWPF&gt;true&lt;/UseWPF&gt; 也可能有效,但我没有对此进行测试。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多