- Home /
How do I call an Office function from a C# script?
I'm working on a game that needs to use some Excel functions. I tried to import those dll's into the asset folder:
Microsoft.Office.Interop.Excel.dll Microsoft.Vbe.Interop.dll Microsoft.Vbe.Interop.Formsl.dll Office.dll
I'm using code like this: double[] num; Microsoft.Office.Interop.Excel.Application oXL = new Microsoft.Office.Interop.Excel.Application(); double resultNum = oXL.WorksheetFunction.Average(num);
It works when I put it into a Windows console application. I have no errors or warnings while compiling. However, the Unity crashes while it reaches this line of code:
double resultNum = oXL.WorksheetFunction.Average(num);
The error reports "Read from location 00000000 caused an access violation." It seems that Unity couldn't find the WorksheetFunction class...
Does anybody know how to call external functions from unity?
Thanks!
Momo
Answer by ckfinite · Jun 13, 2011 at 11:46 PM
You will probably have to use of of these: http://en.wikipedia.org/wiki/Inter-process_communication.
Unity doesn't really support anything that Microsoft made, partially since everything you get nowadays is for .NET 4.0, and partially because they removed functions from Mono. Office interop is especially affected by this, since it relies heavily on COM interop, something you can only get in Unity Pro.
What I would recommend is using a client-server model with inter-application pipes where the game is the server and a CLR application is the client. The game handles user interaction, and the external application handles the excel interop.