Excel-Dna C # Как получить значения из выбранного диапазона в таблице Excel - PullRequest
0 голосов
/ 30 августа 2018

Я пытаюсь ознакомиться с Excel-DNA, но не могу найти документацию о том, как я мог бы перебрать выбранный диапазон значений в ячейках листа. Итак, у меня была бы определенная пользователем функция, которая принимала бы в качестве параметров диапазон ячеек, в которых у меня были бы некоторые данные. Затем я зацикливался на этом диапазоне ячеек и что-то делал с данными. Как я могу сделать такую ​​базовую операцию? Мой код в Visual Studio может выглядеть примерно так:

using System;
using System.Collections.Generic;
using ExcelDna.Integration;

namespace myUDF
{
    public static class Class1
    {
        [ExcelFunction(Name = "LoopArrayTester")]
        public static List<double> LoopArrayTester(??? range)
        {
            List<double> list = new List<double>();

            // loop through somehow the range in worksheet given
            // somehow in the method signature

            for(int i = 0; i < range.count; i++)
            {
                // get values of i'th cell in range and put it to list
                // or something.
            }
        }

        return list;
    }
}

1 Ответ

0 голосов
/ 30 августа 2018

Проще всего позволить вашей функции объявить параметр как тип object[,]. Затем вы получите массив со значениями из входного диапазона. Ваш код может выглядеть так:

public static object Concat2(object[,] values)
{
    string result = "";
    int rows = values.GetLength(0);
    int cols = values.GetLength(1);
    for (int i = 0; i < rows; i++)
    {
        for (int j = 0; j < cols; j++)
        {
            object value = values[i, j];
            result += value.ToString();
        }
    }
    return result;
}

Как правило, вы хотите проверить тип объекта значения и сделать что-то другое в зависимости от этого. Массив object [,], переданный из Excel-DNA, может содержать элементы следующих типов (в зависимости от типа данных значений в соответствующих ячейках):

  • double
  • string
  • bool
  • ExcelDna.Integration.ExcelError
  • ExcelDna.Integration.ExcelEmpty
  • ExcelDna.Integration.ExcelMissing (если функция вызывается без параметра, например =Concat2()).
...