Значения, хранимые в Excel - PullRequest
2 голосов
/ 18 апреля 2011

Добрый вечер!

Какие типы значений могут быть непосредственно сохранены в лист Excel с помощью Range.Value2 и как я могу быстро проверить, может ли конкретное значение?

Предположим, у меня есть массив объектов, возможно, с несколькими типами (например, один int, один double и один Foo, хранящиеся в object[]).

Если я выберу диапазон ширины 3 и попытаюсь сохранить этот массив, используя Range.Value2, это приведет к исключению (конечно, Excel не знает, что такое Foo).

Мне пришла в голову идея проверить каждое значение в массиве и, если оно невозможно сохранить, преобразовать его в строковое представление, используя ToString(). Но как я могу проверить, является ли он изначально хранимым?

Было бы ужасно в конечном итоге сделать что-то подобное:

public bool storable<T>(T value)
{
     return value is int  ||
            value is uint ||
            value is short ||
            value is byte ||
            ...
            value is string;
}

... особенно зная, что каждый is будет приводить переменную к тестируемому типу и серьезно влиять на производительность.

С другой стороны, я не могу позволить себе предварительное приведение каждого значения к типу string, поскольку мне иногда хочется иметь возможность создавать графики и диаграммы с числовыми значениями, а не со строками.

Можете ли вы сказать мне, что я ошибаюсь, или предложить мне какое-либо решение проблемы? Спасибо!

1 Ответ

1 голос
/ 05 мая 2011

Я думаю, вам придется делать то, что вы не выполняете (все проверки "is"), если только вы не можете каким-то образом сделать свой входной массив более строго типизированным.Лучше всего сделать так, чтобы наиболее распространенные удары наносились первыми.

...