ClosedXML 和 UWP

ClosedXML and UWP

我目前正在为我的公司开发一个应用程序,我必须在其中加载 Excel 数据对其进行转换(例如,根据规则进行计算)并将其导出回 Excel 并格式化那个文件。

我选择在 UWP 中开发应用程序(主要是因为布局比 WinForms 好得多,数据绑定是一个很棒的功能,等等)

不过,问题在于读取 Excel 文件。我以前的应用程序版本(在 WinForms 中)使用 Office.Interop COM 库。但这在 UWP 中不受支持(发现困难的方法......)。我知道您可以旁加载或桥接一个处理该应用程序的应用程序,但我认为迁移到 OpenXML 将是一个更好的解决方案,它也提供更好的性能。

不过,使用 OpenXML 有点痛苦。所以我找到了这个漂亮的包装器 ClosedXML。但是,当我尝试读取 Excel 文件时。我收到此错误:

System.TypeInitializationException: 'The type initializer for 'ClosedXML.Excel.XLHelper' threw an exception.'

PlatformNotSupportedException: System.Drawing is not supported on this platform.

var wb = new XLWorkbook();
wb.AddWorksheet("Text");
wb.SaveAs(@"\...\Text.xlsx");

好的,这很有道理。所以我开始在网上寻找任何解决方案。 Multi-targeting: net40, net461, netstandard2.0,是我想出来的。我更新了几个包等等,但问题仍然存在。现在我开始怀疑这是否可能...

有人有关于 UWP 和 ClosedXML 之间兼容性的更多信息吗?以及如何让它发挥作用?

不幸的是,该问题无法修复,因为该库在其代码中使用了 System.Drawing API,而这些 API 并未在 UWP 上实现。这是 .NET Standard 支持的一个不幸的怪癖 - 一个平台可以声明它支持 .NET Standard X.Y 但实际上可能并不完全支持它并且可能会抛出未实现的异常。不幸的是,使 ClosedXML 在 UWP 上工作的唯一方法是 raise an issue 团队并要求他们找到一种方法来解决 UWP 上缺少的 API。