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:


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?



You will probably have to use of of these: Inter-process communication - Wikipedia.

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.