原創|其它|編輯:郝浩|2012-09-06 15:24:52.000|閱讀 739 次
概述:ICustomFunction是一個非常實用的功能,它能夠在模板文件中或通過代碼定義自定義/用戶定義的函數。接下來,我們就將使用Aspose.Cells創建和檢驗一個用戶定義的函數:
# 界面/圖表報表/文檔/IDE等千款熱門軟控件火熱銷售中 >>
ICustomFunction是一個非常實用的功能,它能夠在模板文件中或通過代碼定義自定義/用戶定義的函數。接下來,我們就將使用Aspose.Cells創建和檢驗一個用戶定義的函數:
[C#]
using System;
using System.Collections.Generic;
using System.Text;
using Aspose.Cells;
namespace UsingICustomFunction
{
public class CustomFunction : ICustomFunction
{
public object CalculateCustomFunction(string functionName, System.Collections.ArrayList paramsList, System.Collections.ArrayList contextObjects)
{
//get value of first parameter
decimal firstParamB1 = System.Convert.ToDecimal(paramsList[0]);
//get value of second parameter
Array secondParamC1C5 = (Array)(paramsList[1]);
decimal total = 0M;
// get every item value of second parameter
foreach (object[] value in secondParamC1C5)
{
total += System.Convert.ToDecimal(value[0]);
}
total = total / firstParamB1;
//return result of the function
return total;
}
}
class Program
{
static void Main(string[] args)
{
//Open the workbook
Workbook workbook = new Workbook();
//Obtaining the reference of the first worksheet
Worksheet worksheet = workbook.Worksheets[0];
//Adding a sample value to "A1" cell
worksheet.Cells["B1"].PutValue(5);
//Adding a sample value to "A2" cell
worksheet.Cells["C1"].PutValue(100);
//Adding a sample value to "A3" cell
worksheet.Cells["C2"].PutValue(150);
//Adding a sample value to "B1" cell
worksheet.Cells["C3"].PutValue(60);
//Adding a sample value to "B2" cell
worksheet.Cells["C4"].PutValue(32);
//Adding a sample value to "B2" cell
worksheet.Cells["C5"].PutValue(62);
//Adding custom formula to Cell A1
workbook.Worksheets[0].Cells["A1"].Formula = "=MyFunc(B1,C1:C5)";
//Calcualting Formulas
workbook.CalculateFormula(false, new CustomFunction());
//Assign resultant value to Cell A1
workbook.Worksheets[0].Cells["A1"].PutValue(workbook.Worksheets[0].Cells["A1"].Value);
//Save the file
workbook.Save("C:\\UsingICustomFunction.xls");
}
}
}
[VB]
Imports Aspose.Cells
Module Module1
Sub Main()
'Open the workbook
Dim workbook As New Workbook
'Obtaining the reference of the first worksheet
Dim worksheet As Worksheet = workbook.Worksheets(0)
'Adding a sample value to "A1" cell
worksheet.Cells("B1").PutValue(5)
'Adding a sample value to "A2" cell
worksheet.Cells("C1").PutValue(100)
'Adding a sample value to "A3" cell
worksheet.Cells("C2").PutValue(150)
'Adding a sample value to "B1" cell
worksheet.Cells("C3").PutValue(60)
'Adding a sample value to "B2" cell
worksheet.Cells("C4").PutValue(32)
'Adding a sample value to "B2" cell
worksheet.Cells("C5").PutValue(62)
'Adding custom formula to Cell A1
workbook.Worksheets(0).Cells("A1").Formula =
"=MyFunc(B1,C1:C5)"
'Calcualting Formulas
workbook.CalculateFormula(False, New
CustomFunction)
'Assign resultant value to Cell A1
workbook.Worksheets(0).Cells("A1").PutValue
(workbook.Worksheets(0).Cells("A1").Value)
'Save the file
workbook.Save("C:\\UsingICustomFunction.xls")
End Sub
End Module
Public Class CustomFunction
Implements ICustomFunction
Function CalculateCustomFunction(ByVal functionName As
String, _
ByVal paramsList As System.Collections.ArrayList, _
ByVal contextObjects As
System.Collections.ArrayList) As Object _
Implements ICustomFunction.CalculateCustomFunction
'get value of first parameter
Dim firstParamB1 As Decimal = CType
(paramsList.Item(0), Decimal)
'get value of second parameter
Dim secondParamC1C5 As Array = CType
(paramsList.Item(1), Array)
Dim total As Decimal = 0
' get & add every item value of second parameter
For Each value As Object In secondParamC1C5
total += CType(value(0), Decimal)
Next
total = total / firstParamB1
'return result of the function
Return total
End Function
End Class
代碼運行后的效果圖如下:
本站文章除注明轉載外,均為本站原創或翻譯。歡迎任何形式的轉載,但請務必注明出處、不得修改原文相關鏈接,如果存在內容上的異議請郵件反饋至chenjj@fc6vip.cn
文章轉載自:慧都控件網