Я пытаюсь получить диапазон Excel и скопировать в массив объектов с помощью Vb.Net.

Это не является проблемой. Я использую следующий код:

Dim vValues(,) As Object = ExcelApp.Range(vRange).Value

И отлично работает; но у меня такой случай:

Excel

В столбце «С»; значение имеет определенный формат и внутренне другое значение.

У меня вопрос:

Кто-нибудь знает, как получить точную информацию, которую видит пользователь?

Я пытаюсь получить информацию без использования For ... Each или какого-либо цикла.

Я также старался избегать использования функции «текст в столбцы».

Оба варианта кажутся правильными, но при большом объеме данных могут повлиять на производительность.

К вашему сведению: также я могу получать информацию через соединение ODBC; но я ищу решение, используя Range

1
MiBol 20 Мар 2013 в 21:18

1 ответ

Лучший ответ

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

Вы получаете значение Double в своем массиве вместо значения DateTime, потому что в Excel применено форматирование «Время». Если бы у вас был формат из категории «Дата», Excel вместо этого отправил бы правильный Variant/Date, а не Double, который его представляет.

Другой вариант - создание объектов DateTime на стороне .NET, если вы знаете, в каких столбцах они должны быть.

3
GSerg 20 Мар 2013 в 22:09
Точно. В любом слючае; Я хочу создать общий метод для преобразования диапазона Excel в DataTable; тогда я не хочу оценивать эти исключения. Я думаю, что лучший подход - преобразовать все столбцы в текст, используя функцию «Текст в столбцы».
 – 
MiBol
20 Мар 2013 в 22:27