无法使epplus使用统一和独立的mac版本

时间:2018-04-03 20:28:26

标签: unity3d epplus

我正在开展一个项目,我必须由雇员提供工作时间报告。 实际上,我能够在windows中使用epplus并且一切正常。但它无法让它在Mac上运行。 当我尝试生成报告时,这是我在统一编辑器中出现的错误:

DllNotFoundException: user32.dll
System.Drawing.KnownColorTable.SystemColorToArgb (Int32 index)
System.Drawing.KnownColorTable.UpdateSystemColors (System.Int32[] colorTable)
System.Drawing.KnownColorTable.InitColorTable ()
System.Drawing.KnownColorTable.EnsureColorTable ()
System.Drawing.KnownColorTable.KnownColorToArgb (KnownColor color)
System.Drawing.Color.get_Value ()
System.Drawing.Color.ToArgb ()
OfficeOpenXml.Style.ExcelColor.SetColor (Color color)

我尝试了很多方法让它像以下一样工作: https://answers.unity.com/questions/158983/how-do-you-load-systemdrawingdll-and-gdiplusdll-on.html

我已经安装了mono和mono-libgdiplus库。

感谢您的帮助!

2 个答案:

答案 0 :(得分:1)

每当我发现他们在Unity中使用System.Drawing时,我总是会警告他们。是的,它可以在Windows上运行,这会让你相信一切都很好,但它不会在其他任何地方工作。

这是因为System.Drawing依赖于来自 C:\ Windows \ System32 和其他Windows目录的某些DLL。您需要对这些DLL进行完全重写才能获得除了Windows之外,它们还可以处理其他任何事情。

即使使用mono-libgdiplus库,你仍然会在Unity中遇到另一个问题。找到另一个不依赖于System.Drawing API。

如果您需要在Unity中使用epplus,您实际上可以实现自己的API以使用Unity的InputField UI组件显示Excel数据,然后使用 libreoffice 加载它。如果你不能做自己,那么考虑使用另一个人制作的。 Here是github中的一个。

答案 1 :(得分:1)

可以使EPPlus对源代码进行一些修改,在其中删除对System.Drawing的引用。

.NET是开源的,因此您可以从System.Drawing命名空间中添加一些类,例如Color。图片和字体将很难重新实现。