ClosedXML 和 UWP

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


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


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


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


System.TypeInitializationException: 'ClosedXML.Excel.XLHelper' 的类型初始值设定项引发异常。


PlatformNotSupportedException:此平台不支持 System.Drawing。


var wb = new XLWorkbook();

wb.AddWorksheet("Text");

wb.SaveAs(@"\\...\Text.xlsx");

好吧,这是完全有道理的。所以我开始在网上寻找任何解决方案。多目标: net40, net461, netstandard2.0,是我想出的。我更新了几个软件包等等,但问题仍然存在。现在我开始想知道这是否可能......


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



慕妹3146593
浏览 166回答 1
1回答

人到中年有点甜

遗憾的是,该问题无法修复,因为该库System.Drawing在其代码中使用了未在 UWP 上实现的 API。这是 .NET Standard 支持的一个不幸的怪癖 - 一个平台可以声明它支持 .NET Standard XY,但实际上可能并不完全支持它,并且可能会抛出未实现的异常。不幸的是,使 ClosedXML 在 UWP 上工作的唯一方法是向团队提出问题并要求他们找到一种方法来解决 UWP 上缺失的 API。
打开App,查看更多内容
随时随地看视频慕课网APP