我正在开展一个项目,我必须由雇员提供工作时间报告。 实际上,我能够在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库。
感谢您的帮助!
答案 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。图片和字体将很难重新实现。