Module1.vb
Imports Bytescout.Spreadsheet Module Module1 ' This example demonstrates the calculation of custom functions. Sub Main() ' Create Spreadsheet instance Dim spreadsheet As New Spreadsheet() spreadsheet.RegistrationName = "demo" spreadsheet.RegistrationKey = "demo" ' Load document spreadsheet.LoadFromFile("CustomFuncExample.xlsx") ' Add custom formula handler spreadsheet.CustomFunctionsCallback = AddressOf MyFunctions ' Calculate the first worksheet Dim worksheet = spreadsheet.Workbook.Worksheets(0) worksheet.Calculate() ' Save calculated values to neighbor cells to demonstrate custom functions are calculated worksheet("C2").Value = worksheet("B2").Value worksheet("C3").Value = worksheet("B3").Value worksheet("C4").Value = worksheet("B4").Value ' Save modified spreadsheet spreadsheet.SaveAs("result.xlsx") ' Cleanup spreadsheet.Dispose() ' Open saved spreadsheet in associated application (for demo purpose) Process.Start("result.xlsx") End Sub Private Function MyFunctions(ByVal funcname As String, ByVal args As Object(), ByRef handled As Boolean) As Object ' Handle "CUSTOMFUNC_FACTORIAL" function If String.Compare(funcname, "CUSTOMFUNC_FACTORIAL", StringComparison.OrdinalIgnoreCase) = 0 Then handled = True ' Compute factorial If args.Length > 0 Then Dim value As Integer = args(0) If value = 0 Or value = 1 Then Return 1 End If Dim f As Integer = 1 For i As Integer = 1 To value f = f * i Next Return f End If Return Nothing End If ' Handle "CUSTOMFUNC_SUM" function If String.Compare(funcname, "CUSTOMFUNC_SUM", StringComparison.OrdinalIgnoreCase) = 0 Then handled = True ' Compute the sum of values If args.Length > 0 Then Dim sum As Double For Each o As Object In args sum = sum + o Next Return sum End If Return Nothing End If Return Nothing End Function End Module
Click here to get your Free Trial version of the SDK
also available as: