Вопросы и ответы по пользовательским функциям служб Excel
Дата последнего изменения: 21 января 2010 г.
Применимо к: SharePoint Server 2010
В этой статье
Создание пользовательских функций управляемого кода
Типы данных
Модули XLL
В этом разделе приведены вопросы и ответы, касающиеся применения пользовательских функций (UDF) в службах Excel.
Создание пользовательских функций управляемого кода
Что представляет собой поддерживаемый класс UDF?
Класс UDF в сборке UDF должен быть открытым. Этот класс может быть запечатанным, однако не может быть абстрактным, внутренним или закрытым. Этот класс должен содержать открытый конструктор без параметров. Для языков, в которых поддерживается автоматическое создание открытого конструктора без параметров (например, C#), можно не задавать конструктор.
Что представляет собой поддерживаемый метод UDF?
Метод UDF в сборке UDF должен быть открытым и потокобезопасным.
Метод UDF не может содержать следующие элементы:
Параметры ref или out
Атрибуты retval
Аргументы Optional
Неподдерживаемые типы данных
Метод UDF также должен возвращать значения поддерживаемого типа. Список поддерживаемых типов данных см. в подразделе "Типы данных" этого раздела.
Поддерживается ли вызов веб-службы из сборки UDF?
Да. См. следующий пример кода UDF. Также см. статью Создание пользовательской функции, вызывающей веб-службу.
using System;
using System.Collections.Generic;
using System.Text;
using Microsoft.Office.Excel.Server.Udf;
using UdfWS.dk.iter.webservices;
namespace UdfWS
{
[UdfClass]
public class MyUdfClass
{
// Instantiate the Web service. The Web service used is at
// http://webservices.iter.dk/calculator.asmx
Calculator calc = new Calculator();
[UdfMethod]
public int MyFunction()
{
int i;
i = (i + 88) * 2;
return i;
}
[UdfMethod(IsVolatile = true)]
public double MyDouble(double d)
{
return d * 9;
}
[UdfMethod]
public int AddMe(int a, int b)
{
int c;
// Call the Web service Add method
c = calc.Add(a, b);
return c;
}
}
}
Imports System
Imports System.Collections.Generic
Imports System.Text
Imports Microsoft.Office.Excel.Server.Udf
Imports UdfWS.dk.iter.webservices
Namespace UdfWS
<UdfClass> _
Public Class MyUdfClass
' Instantiate the Web service. The Web service used is at
' http://webservices.iter.dk/calculator.asmx
Private calc As New Calculator()
<UdfMethod> _
Public Function MyFunction() As Integer
Dim i As Integer
i = (i + 88) * 2
Return i
End Function
<UdfMethod(IsVolatile := True)> _
Public Function MyDouble(ByVal d As Double) As Double
Return d * 9
End Function
<UdfMethod> _
Public Function AddMe(ByVal a As Integer, ByVal b As Integer) As Integer
Dim c As Integer
' Call the Web service Add method
c = calc.Add(a, b)
Return c
End Function
End Class
End Namespace
Типы данных
Какие типы данных можно использовать в качестве параметров UDF?
Поддерживаются следующие типы данных:
Числовые типы: Double, Single, Int32, UInt32, Int16, UInt16, Byte, Sbyte
Строковый тип
Логический тип
Массивы объектов: одно- или двухмерные массивы, например object [] и object [,]
DateTime
Какие типы возвращаемых значений поддерживаются?
Поддерживаются следующие типы возвращаемых значений:
Числовые типы: Double, Single, Int32, UInt32, Int16, UInt16, Byte, Sbyte
Строковый тип
Логический тип
Массивы объектов: одно- или двухмерные массивы, например object [], object [,], int[] и int[,])
DateTime
Object
Модули XLL
Поддерживаются ли модули XLL?
Косвенно. В службах Excel поддерживается загрузка и вызов только пользовательских функций управляемого кода. Однако можно написать оболочку управляемого кода для вызова модулей XLL и развернуть эти модули на сервере вместе со сборкой оболочки управляемого кода.
См. также
Задачи
Создание пользовательской функции, вызывающей веб-службу
Инструкции по определению надежного расположения
Практическое руководство. Перехват исключений
Концепции
Общее представление о пользовательских функциях служб Excel
Пошаговое руководство. Разработка пользовательской функции с управляемым кодом