我目前正在为我的公司开发一个应用程序,在那里我必须加载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之间兼容性的信息吗?以及如何让它发挥作用?
发布于 2018-08-03 09:20:23
不幸的是,这个问题无法修复,因为库在其代码中使用了System.Drawing API,这些API不是在UWP上实现的。这是.NET标准支持的一个不幸的怪癖--一个平台可以声明它支持.NET标准X.Y,但可能实际上并不完全支持它,并且可能会抛出未实现的异常。不幸的是,使ClosedXML在UWP上工作的唯一方法是向团队提出问题,并要求他们找到一种方法来解决UWP上缺少的API。
https://stackoverflow.com/questions/51668545
复制相似问题