// Create a new workbook Workbook workbook = new Workbook(); Workbook.AddCustomFunction(new MyFunctionWithAcceptErrors("MyFuncCanAcceptErrors", true)); Workbook.AddCustomFunction(new MyFunctionWithAcceptErrors("MyFuncNotAcceptErrors", false)); IWorksheet worksheet = workbook.getActiveSheet(); worksheet.getRange("A1:B1").merge(); worksheet.getRange("A7:B7").merge(); worksheet.getRange("A1:B1").setValue("Custom function that accepts errors"); worksheet.getRange("A7:B7").setValue("Custom function that does not accept errors"); worksheet.getRange("A2, A8").setValue("Formula"); worksheet.getRange("B2, B8").setValue("Result"); worksheet.getRange("A1:B1, A7:B7, A2, A8, B2, B8").getFont().setBold(true); worksheet.getRange("A2, A8, B2, B8").setHorizontalAlignment(HorizontalAlignment.Center); // B3 cell's value is "Exist errors: #Div0" worksheet.getRange("A3").setValue("=MyFuncCanAcceptErrors(1, 2, 1/0)"); worksheet.getRange("B3").setFormula("=MyFuncCanAcceptErrors(1, 2, 1/0)"); // B4 cell's value is "Exist errors: #Value" worksheet.getRange("A4").setValue("=MyFuncCanAcceptErrors(1, \"test\" + 1, 3)"); worksheet.getRange("B4").setFormula("=MyFuncCanAcceptErrors(1, \"test\" + 1, 3)"); // B5 cell's value is "Exist errors: #Name, #Num" worksheet.getRange("A5").setValue("=MyFuncCanAcceptErrors(SUME(1), 2, SQRT(-1), 4)"); worksheet.getRange("B5").setFormula("=MyFuncCanAcceptErrors(SUME(1), 2, SQRT(-1), 4)"); // B9 cell's value is error of #DIV/0! worksheet.getRange("A9").setValue("=MyFuncNotAcceptErrors(1, 2, 1/0)"); worksheet.getRange("B9").setFormula("=MyFuncNotAcceptErrors(1, 2, 1/0)"); // B10 cell's value is error of #VALUE! worksheet.getRange("A10").setValue("=MyFuncNotAcceptErrors(1, \"test\" + 1, 3)"); worksheet.getRange("B10").setFormula("=MyFuncNotAcceptErrors(1, \"test\" + 1, 3)"); // B11 cell's value is error #NAME? worksheet.getRange("A11").setValue("=MyFuncNotAcceptErrors(SUME(1), 2, SQRT(-1), 4)"); worksheet.getRange("B11").setFormula("=MyFuncNotAcceptErrors(SUME(1), 2, SQRT(-1), 4)"); worksheet.getRange("A:B").autoFit(); worksheet.getPageSetup().setPrintHeadings(true); worksheet.getPageSetup().setPrintGridlines(true); worksheet.getPageSetup().setOrientation(PageOrientation.Landscape); worksheet.getPageSetup().setPrintArea("$A$1:$G$20"); /* public class MyFunctionWithAcceptErrors extends CustomFunction { private boolean acceptErrors = false; public MyFunctionWithAcceptErrors(String funcName, boolean acceptError) { super(funcName, FunctionValueType.Text); this.acceptErrors = acceptError; } @Override public boolean getAcceptErrors() { return acceptErrors; } @Override public void setAcceptErrors(boolean value) { acceptErrors = value; } @Override public Object evaluate(Object[] arguments, ICalcContext context) { if (arguments == null || arguments.length == 0) { return null; } StringBuilder result = new StringBuilder(); for (Object argument : arguments) { if (argument instanceof CalcError) { CalcError calcError = (CalcError) argument; if (result.length() > 0) { result.append(", #").append(calcError); } else { result.append("Exist errors: #").append(calcError); } } } return result.length() > 0 ? result.toString() : "No error"; } } */ // Save to a pdf file workbook.save("AcceptErrorsInCustomFunction.pdf");