Поделиться через


Вопросы и ответы по пользовательским функциям служб 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

Пошаговое руководство. Разработка пользовательской функции с управляемым кодом

Архитектура служб Excel

Excel Services Alerts

Известные проблемы и советы по работе со службами Excel

Рекомендации по работе со службами Excel