2014-11-26 4 views
0

У меня есть приложение vb.net, которое извлекает данные из excel и выполняет некоторую операцию. Я использую объект excel Range для получения значений от excel. Ниже приводится строка кода, я использую,Преобразование двойного значения в массив в vb.net

xlsRangetrans = xlsWorkbook.Worksheets(SHEET_1).Range("Range1") 
    Dim transArray(,) As Object = xlsRangetrans.Value 

Приведенный выше код работает успешно, если у меня есть более одного значения в диапазон1. Но если у меня есть только одно значение, я получаю ошибку.

Например: xlsRangetras.value не имеет "123.0,124.0, ничего, ничего" как System.Array, которая проходит успешно

Но если xlsRangetras.value имеет "123,0", как Double, он дает мне ошибку.

Как преобразовать двойное значение в массив в моем случае.

Пожалуйста, помогите.

ответ

0
Dim helper As Object = xlsRangetrans.Value 
    Dim transArray(,) As Object = _ 
     If(TypeOf helper Is Object(,), helper, {{DirectCast(helper, Object)}}) 

Update

Очевидно, что оператор If не существует в более ранних версиях .NET. В этом случае эта часть кода может помочь.

Dim helper As Object = xlsRangetrans.Value 
    Dim transArray(,) As Object 
    If TypeOf helper Is Object(,) Then 
     transArray = helper 
    Else 
     transArray = {{DirectCast(helper, Object)}} 
    End If 
+0

Правильно ли это синтаксис. Потому что я получаю ошибку в {{DirectCast (helper, Object)}}. «Expression Expected» – user3859666

+0

Я думаю, что проблема заключается не в конструкции {{}}, а в операторе If. Попробуйте, если он будет работать с моим обновлением выше. – Fratyx

+0

Вместо DirectCast я пробовал с кастом вроде «Новый объект (,) {{xlsRangetrans.Value, Nothing}} '. Он работает ... Спасибо – user3859666

Смежные вопросы