Free Support Forum - aspose.com

Returning Value from ICustomFunction

I'm using version 4.4.2.1 of Aspose.Cells in Visual Basic .NET, and I'm having trouble returning a value from my CalculateCustomFunction function.

I'm assuming that I can return a boolean, integer, double, string, etc. as the Java documentation states, but when I include an empty CalculateCustomFunction function that simply returns a value (for example, 5) and use "=CUSTFUNC(1)+1" in my workbook, it has no effect. It should change it to 6, correct? Or am I misunderstanding?

When stepping through the code, I can see that CalculateCustomFunction is being called with functionName = "CUSTFUNC", it's just that I'm not sure what to return.

Hi,

Thanks for considering Aspose.

How do you write code and implement ICustomFunction, Could you create a sample console test Application, zip it and post it here to show the issue, We will check it soon.

By the way, following sample shows how to use ICustomFunction interface:

Class CustomFunction

Imlements Aspose.Cells.ICustomFunction

Public Function CalculateCustomFunction(ByVal functionName As String, ByVal paramsList As ArrayList, ByVal contextObjects As ArrayList) As Object

......

End Function

End Class

............

Dim wb As Workbook = New Workbook()

wb.Open("d:\test\designer.xls")

Dim customFunction As CustomFunction = New CustomFunction()
wb.CalculateFormula(false, customFunction)

..........

Thank you.

Hi,

I apologize for taking so long to reply.

I have attached an example of what I'm trying to do (very simple, just trying to return a value from my custom function).

It's my understanding that I can return a value from my custom function, and Aspose.Cells will replace the reference to CUSTFUNC() with the value I return. Am I misunderstanding the purpose of custom functions?

CalculateFormula function returns correct result at run time but it won't change the file. To replace cell with correct value, please try following code:

Sub Main()
Const WORKBOOK_NAME As String = "..\..\..\test.xls"

Dim lic As New Aspose.Cells.License()
lic.SetLicense("Aspose.Cells2.lic")

'Open the workbook
Dim wbk As New Aspose.Cells.Workbook
wbk.Open(WORKBOOK_NAME)

wbk.CalculateFormula(False, New CustomFunction)

wbk.Worksheets(0).Cells("A1").PutValue(wbk.Worksheets(0).Cells("A1").Value)

'Save the workbook
wbk.Save(WORKBOOK_NAME)
End Sub